一,使用xml文件直接映射
1.先传建一个实体类
package com.array.bean;
public class Mybatis {
private String last_name;
private Integer id ;
private char gender;
private String email;
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name = last_name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
2,创建一个接口
package com.array.dao;
import com.array.bean.Mybatis;
/**
* 接口式编程
* 不用创建实现类通过文件配置进行实现
* IMybatis
* 创建人:jcy
* 时间:2018年6月7日-上午11:46:56
* @version 1.0.0
*
*/
public interface IMybatis {
public Mybatis getMybatisById(Integer id);
public Mybatis findUserByUserName(String last_name);
}
3.创建一个mapping.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标签,一个mapper标签下可以放多个select标签 -->
<!-- namespace:隔离SQL映射文件的,是一个SQL映射文件的唯一标识 -->
<!-- <mapper namespace="user">
SQL
根据id查询用户信息 parameterType 传入参数类型
<select id="getMybatisById" parameterType="int" resultType="com.array.bean.Mybatis">
SELECT
*
FROM mybatis
WHERE
id = #{id}
</select>
根据用户名查询用户信息(方式一:用占位符接收参数映射)
<select id="findUserByUserName" parameterType="String" resultType="com.array.bean.Mybatis">
SELECT
*
FROM mybatis
WHERE
last_name LIKE #{last_name}
</select>
</mapper> -->
4.创建一个mybatis-config.xml文件,注册sql映射文件内容如下:
<?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>
<!-- <settings>
<setting name="jdbcTypeForNull" value="NULL"/>
</settings>
<properties resource="dbconfig.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED" >
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="poolMaximumActiveConnections" value="50"/>
</dataSource>
</environment>
</environments>
<!-- 将写好的sql文件注册到全局 -->
<mappers>
<mapper resource="com/array/mapper/mapping.xml"/>
</mappers>
</configuration>
5.测试,使用junit进行模块测试
这里调用接口方法必须 namespace名字.方法名,
selectOne的第一个参数 namespace名字.方法名,后面跟要传参数
Mybatis userInfo = sqlSession.selectOne("user.findUserByUserName", "array");
public void test1() {
String resource = "mybatis-config.xml";
SqlSession sqlSession = null;
// 读取配置文件
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
// 根据配置文件创建会话工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 根据会话工厂创建会话对象
sqlSession = sqlSessionFactory.openSession();
System.out.println(sqlSession);
// 根据id查询用户信息
Mybatis userInfo = sqlSession.selectOne("user.findUserById", 1);
System.out.println(userInfo);
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally{
sqlSession.close();
}
}
public void test0() throws Exception {
String resource = "mybatis-config.xml";
// 读取配置文件
InputStream inputStream = Resources.getResourceAsStream(resource);
// 根据配置文件创建会话工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 根据会话工厂创建会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 根据name查询用户信息
Mybatis userInfo = sqlSession.selectOne("user.findUserByUserName", "array");
System.out.println(userInfo);
sqlSession.close();
}
二,使用接口映射
上面方法的文件映射比较麻烦,每次创建一个sql映射文件,都需要将其配置到全局中,为了解决这个问题可以使用接口映射
使用这种方法需要注意的是,xml映射文件必须与接口同名,且包在同一个包目录下,这样就能配置一次,映射所有的sql语句xml文件
sql的xml文件举例如下:
<!-- namespace指定为接口的路径 id="getMybatis"是绑定接口中的方法-->
<mapper namespace="com.array.dao.IMybatis">
<select id="getMybatisById" parameterType="int" resultType="com.array.bean.Mybatis">
SELECT
email
FROM mybatis
WHERE
id = #{id}
</select>
</mapper>
测试:
@org.junit.Test
public void test2() {
//会为接口创建一个代理对象
//获取sessionFactory对象
SqlSessionFactory sqlSessionFactory = getsSqlSessionFactory();
//获取sqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//获取接口的实例类对象
IMybatis mapper = sqlSession.getMapper(IMybatis.class);
Mybatis mybatis = mapper.getMybatisById(1);
System.out.println(mybatis.getEmail());
sqlSession.close();
}