mybatis映射文件的配置及其实例

一,使用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();
		
		
	}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值