MyBatis起步
2016-09-28 16:00
190 查看
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
基本使用方法如下:
CREATE TABLE usertable (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(10) DEFAULT NULL,
sex int(11) DEFAULT NULL,
address varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 |
随便加入一些测试数据:
打开eclipse创建一个Java工程,在工程中加入Junit4依赖方便测试,目录结构如下:
添加mybatis依赖和数据库连接驱动:
mybatis-3.2.7.jar
mysql-connector-java-5.1.7-bin.jar
2、在com.po包下写一个封装数据的简单类User,添加getters、setters和toString方法
package com.po;
public class User {
private int id;
private String username;
private int sex;
private String address;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", address=" + address + "]";
}
}
3、全局配置文件
首先是一个全局配置文件(名称可以自己制定),我这里取名为SqlMapConfig.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理-->
<transactionManager type="JDBC" />
<!-- 数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="123" />
</dataSource>
</environment>
</environments>
<mappers>
</mappers>
</configuration>
注意这里的mappers标签,接下来还要添加东西。
4、创建mapper
在config文件夹下创建一个folder名为mapper
在mapper下创建UserMapper.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">
<mapper namespace="com.dao.UserMapper">
<select id="findUserById" parameterType="int" resultType="com.po.User">
select * from usertable where id = #{id}
</select>
<insert id="insertUser" parameterType="com.po.User">
insert into usertable(username, sex,address) values(#{username}, #{sex}, #{address})
</insert>
</mapper>这里封装了两个数据库操作
注意这里的namespace属性为com.dao.UserMapper这是我们要定义的接口的全限定类名,我们要定义一个接口,mybatis就会自动依据mapper配置文件自动生成代理类,这样就可以通过调用接口中的方法来实现对数据库的操作了。
在写完mapper配置文件后要记得在第三部的全局配置文件中注册该mapper。方法为:在<mappers></mappers>标签中添加:
<mapper resource="mapper/UserMapper.xml"/>
5、定义dao接口
在定义dao接口之前要知道,接口和上面定义的mapper是一一对应的。对应规范如下:
1、 Mapper.xml文件中的namespace与mapper接口的类路径相同。
2、 Mapper接口方法名和Mapper.xml中定义的每个statement的id相同 (一个sql语句就是一个statement)
3、 Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
4、 Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
package com.dao;
import com.po.User;
public interface UserMapper {
public User findUserById(int id) throws Exception;
public void insertUser(User user) throws Exception;
}<strong>
</strong>
package com.test;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import com.dao.UserMapper;
import com.po.User;
public class TestUserMapper {
private SqlSessionFactory sqlSessionFactory;
@Before
public void setUp() throws IOException{
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void testFindUserById() throws Exception{
//获取session
SqlSession sqlSession = sqlSessionFactory.openSession();
//获取mapper接口的代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//调用代理对象的方法
User user = userMapper.findUserById(9);
System.out.println(user);
sqlSession.close();
}
}
简单说明一下,mybatis的使用流程是这样的:
setUp方法中的代码可以作为一个模板来使用,在这个方法中最后通过SqlSessionFactoryBuilder来创建一个SqlSessionFactory的实例,对于所有的sql操作一个实例就够了。
然后在每个dao方法中都要由SqlSessionFactory来创建一个SqlSession实例
调用getMapper方法传入UserMapper的类类型生成代理对象,而后就可以进行增删改查操作了
最后切记要关闭sqlSession释放资源。
执行测试方法可以看到输出:
User [id=9, username=kitty, sex=1, address=NewYork]
基本使用方法如下:
一、准备数据表
首先创建一个数据库mybatis并在mybatis数据库下创建usertable 表CREATE TABLE usertable (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(10) DEFAULT NULL,
sex int(11) DEFAULT NULL,
address varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 |
随便加入一些测试数据:
二、进入正题
1、创建工程打开eclipse创建一个Java工程,在工程中加入Junit4依赖方便测试,目录结构如下:
添加mybatis依赖和数据库连接驱动:
mybatis-3.2.7.jar
mysql-connector-java-5.1.7-bin.jar
2、在com.po包下写一个封装数据的简单类User,添加getters、setters和toString方法
package com.po;
public class User {
private int id;
private String username;
private int sex;
private String address;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", address=" + address + "]";
}
}
3、全局配置文件
首先是一个全局配置文件(名称可以自己制定),我这里取名为SqlMapConfig.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理-->
<transactionManager type="JDBC" />
<!-- 数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="123" />
</dataSource>
</environment>
</environments>
<mappers>
</mappers>
</configuration>
注意这里的mappers标签,接下来还要添加东西。
4、创建mapper
在config文件夹下创建一个folder名为mapper
在mapper下创建UserMapper.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">
<mapper namespace="com.dao.UserMapper">
<select id="findUserById" parameterType="int" resultType="com.po.User">
select * from usertable where id = #{id}
</select>
<insert id="insertUser" parameterType="com.po.User">
insert into usertable(username, sex,address) values(#{username}, #{sex}, #{address})
</insert>
</mapper>这里封装了两个数据库操作
注意这里的namespace属性为com.dao.UserMapper这是我们要定义的接口的全限定类名,我们要定义一个接口,mybatis就会自动依据mapper配置文件自动生成代理类,这样就可以通过调用接口中的方法来实现对数据库的操作了。
在写完mapper配置文件后要记得在第三部的全局配置文件中注册该mapper。方法为:在<mappers></mappers>标签中添加:
<mapper resource="mapper/UserMapper.xml"/>
5、定义dao接口
在定义dao接口之前要知道,接口和上面定义的mapper是一一对应的。对应规范如下:
1、 Mapper.xml文件中的namespace与mapper接口的类路径相同。
2、 Mapper接口方法名和Mapper.xml中定义的每个statement的id相同 (一个sql语句就是一个statement)
3、 Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
4、 Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
package com.dao;
import com.po.User;
public interface UserMapper {
public User findUserById(int id) throws Exception;
public void insertUser(User user) throws Exception;
}<strong>
</strong>
三、测试
接下来可以写一个测试类测试一下了:package com.test;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import com.dao.UserMapper;
import com.po.User;
public class TestUserMapper {
private SqlSessionFactory sqlSessionFactory;
@Before
public void setUp() throws IOException{
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void testFindUserById() throws Exception{
//获取session
SqlSession sqlSession = sqlSessionFactory.openSession();
//获取mapper接口的代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//调用代理对象的方法
User user = userMapper.findUserById(9);
System.out.println(user);
sqlSession.close();
}
}
简单说明一下,mybatis的使用流程是这样的:
setUp方法中的代码可以作为一个模板来使用,在这个方法中最后通过SqlSessionFactoryBuilder来创建一个SqlSessionFactory的实例,对于所有的sql操作一个实例就够了。
然后在每个dao方法中都要由SqlSessionFactory来创建一个SqlSession实例
调用getMapper方法传入UserMapper的类类型生成代理对象,而后就可以进行增删改查操作了
最后切记要关闭sqlSession释放资源。
执行测试方法可以看到输出:
User [id=9, username=kitty, sex=1, address=NewYork]
相关文章推荐
- MyBatis起步
- 新产品项目开发的艰难起步
- maven:mybatis-generator
- 读取txt文件中的值并用myBatis将对象插入到数据库中
- mybatis动态sql以及reslutType和resultMap详解
- myBatis的xml大于小于不等于模糊查询
- mybatis+oracle+批量insert批量update
- spring与mybatis三种整合方法
- 用mybatis实现返回刚插入表数据记录的主键值id
- Mybatis注解
- Mybatis3+Spring4+SpringMVC4 整合
- mybatis源码-原来resultMap解析完是这样
- MFC起步
- C#起步小程序 拷贝程序
- 【MyBatis框架】查询缓存-二级缓存-整合ehcache
- mybatis 不识别>= <=号
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- SpringMVC整合Mybatis+Maven+Bootstrap的简单Demo
- 【持久化框架】Mybatis与Hibernate的详细对比
- springmvc+mybatis+maven项目框架搭建