上手Mybatis,最基本基于xml配置使用示例
2016-07-20 17:01
387 查看
最近由于项目需要ssm框架来做,对于以前只使用过hibernate的我来说是一个不好的消息,于是只好在网上学习一下mybatis的使用方法,但大多都是和spring整合起来使用的,配置也是错综复杂,几经对比,自己摸索出了mybatis的基本使用方法,并做了一个小demo来测试一下。
Mybatis也是面向接口的,此文主要介绍基本的基于xml配置的使用,并未使用接口。
最终目录如图所示(dao暂未使用)
一、测试需要的jar包
1、mysql数据库包
2、mybatis包
二、在数据库中建立对应的数据库mybatis,并创建对应的表和字段
建库:
CREATE DATABASE `Mybatis`CHARACTER SET utf8;
建表:
CREATE TABLE `mybatis`.`learner`( `id` INT(10) NOT NULL AUTO_INCREMENT, `name` VARCHAR(20), `status` VARCHAR(20), PRIMARY KEY (`id`) );
插入数据:
INSERT INTO `mybatis`.`learner` (`name`, `status`) VALUES ('严飞', '9');
INSERT INTO `mybatis`.`learner` (`name`, `status`) VALUES ('林寻', '8');
二、实体类,简单的几个字段,对应表中的几个字段
com.ghill.model.Learner.java
三、Mybatis.xml的配置
Mybatis.xml
四、mapper文件的配置
LearnerMapper.xml
五、测试类:
com.ghill.test.Test.java
mybatis相比于hibernate更灵活,对于sql语句的调优更加方便,但是sql都需要自己写,需要配置的东西也比较多。但由于sql语句基本写好,当更换数据库时sql语句也需要更改,hibernate则可以解决这个问题。
所以两者到底谁更好,还是见仁见智吧。
Mybatis也是面向接口的,此文主要介绍基本的基于xml配置的使用,并未使用接口。
最终目录如图所示(dao暂未使用)
一、测试需要的jar包
1、mysql数据库包
2、mybatis包
二、在数据库中建立对应的数据库mybatis,并创建对应的表和字段
建库:
CREATE DATABASE `Mybatis`CHARACTER SET utf8;
建表:
CREATE TABLE `mybatis`.`learner`( `id` INT(10) NOT NULL AUTO_INCREMENT, `name` VARCHAR(20), `status` VARCHAR(20), PRIMARY KEY (`id`) );
插入数据:
INSERT INTO `mybatis`.`learner` (`name`, `status`) VALUES ('严飞', '9');
INSERT INTO `mybatis`.`learner` (`name`, `status`) VALUES ('林寻', '8');
二、实体类,简单的几个字段,对应表中的几个字段
com.ghill.model.Learner.java
package com.ghill.model; public class Learner { private int id; private String name; private String status; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } }
三、Mybatis.xml的配置
Mybatis.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <span style="color:#FF0000;"><!-- !imprtant 注意标签的书写顺序 --></span> <!-- 设置类的别名,在此处配置的类的缩写,在mapper配置中可以直接应用,若不配置则需要在mapper中写类的全路径 --> <typeAliases> <typeAlias type="com.ghill.model.Learner" alias="Learner" /> </typeAliases> <!-- 配置数据库连接的环境,整合到spring中后可在properties文件中配置并通过spring管理 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis" /> <property name="username" value="root" /> <property name="password" value="password" /> </dataSource> </environment> </environments> <!-- 配置mapper文件,同样,整合spring后可由spring管理 --> <mappers> <mapper resource="LearnerMapper.xml" /> </mappers> </configuration>
四、mapper文件的配置
LearnerMapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 此处namespace配置为该mapper的<span style="color:#FF0000;">唯一标识</span>在,随后的测试代码中session.selectOne(String <span style="color:#FF0000;">statement</span>,Object parameter) 中的<span style="color:#FF0000;">statement</span>对应该处的namespace.下方的id--> <mapper namespace="LearnerMapper"> <!-- select标签标示一条基本的select语句,当然还有insert,update,delete id:改select标签的id标识; parameterType:传入该语句的参数类型; resultType:该条sql语句返回值类型(此处Learner是由于之前配置了缩写才可直接使用); --> <select id="getLearnerById" parameterType="int" resultType="Learner"> select * from learner where id = #{id}; </select> </mapper>
五、测试类:
com.ghill.test.Test.java
package com.ghill.test; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.ghill.model.Learner; public class Test { public static void main(String[] args) { Reader reader = null; try { //我的mybatis.xml放在了src目录下 //reader = new BufferedReader(new FileReader(new File("src/Mybatis.xml"))); reader = Resources.getResourceAsReader("Mybatis.xml"); } catch (Exception e) { e.printStackTrace(); } //通过builder建立一个工厂并打开一个session,类似hibernate SqlSession session = new SqlSessionFactoryBuilder().build(reader).openSession(); //selectOne方法第一个参数字符串是LearnerMapper.xml中的namespace和Id组合 Learner learner = session.selectOne("LearnerMapper.getLearnerById", 3); System.out.println(learner.getName()); } }
mybatis相比于hibernate更灵活,对于sql语句的调优更加方便,但是sql都需要自己写,需要配置的东西也比较多。但由于sql语句基本写好,当更换数据库时sql语句也需要更改,hibernate则可以解决这个问题。
所以两者到底谁更好,还是见仁见智吧。
相关文章推荐
- Mybatis传递多个参数的解决办法(三种)
- 获取Java的MyBatis框架项目中的SqlSession的方法
- Mybatis逆工程jar包的修改和打包
- 深入浅析mybatis oracle BLOB类型字段保存与读取
- MyBatis MapperProvider MessageFormat拼接批量SQL语句执行报错的原因分析及解决办法
- MyBatis启动时控制台无限输出日志的原因及解决办法
- 详解Java的MyBatis框架和Spring框架的整合运用
- Java的MyBatis框架项目搭建与hellow world示例
- SpringMVC整合mybatis实例代码
- Java实现mybatis批量插入数据到Oracle
- oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert
- MyBatis学习笔记(二)之关联关系
- 浅析Mybatis 在CS程序中的应用
- Java Mybatis框架入门基础教程
- Windows下Java+MyBatis框架+MySQL的开发环境搭建教程
- Mybatis与Ibatis的区别
- Mybatis控制台打印Sql语句的实现代码
- Mybatis传递多个参数进行SQL查询的用法
- MyBatis学习教程(二)―如何使用MyBatis对users表执行CRUD操作
- spring mybatis多数据源实例详解