mybatis自学

一、mybatis的安装使用:

1.导入架包:mybatis-x.x.x.jar;选择自己需要的版本;

maven工程在pox.xml文件引入依赖:

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>选择的mybatis版本</version>
</dependency>
2.配置数据源和事务管理
<?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">
      <!-- 事务管理 -->  
      <transactionManager type="JDBC"/>
       <!-- 配置数据源 -->
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

配置好数据源和事务管理后就可以使用mybatis。mybatis的核心实例是SQLSessionFactory。

3.创建SqlSessionFactory实例。

该工具类创建SqlSessionFactory对象并返回,通过Resources类的getResourceAsStream(resource);方法创建SqlSessionFactory对象;

     /**
	 * 获取SQLSessionFactory对象
	 * @return 返回sqlSessionFactory对象
	 */
	public static SqlSessionFactory getSqlSessionFactory() { 
		SqlSessionFactory sqlSessionFactory = null;
		try {
			String resource = "/chapter2/src/main/resources/smart-context.xml";
			InputStream inputStream;
			inputStream = Resources.getResourceAsStream(resource);
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return sqlSessionFactory;
	}

4.通过SqlSessionFactory对象获取SqlSession对象,并通过SqlSession对象获取已映射的sql语句,下面是获取已映射的sql语句的两种方法;图一是通过xml获取,图二是通过类映射器获取

//创建SqlSessionFactory 对象
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtil.getSqlSessionFactory();
//通过SqlSessionFactory 对象获取SqlSession对象
SqlSession session = sqlSessionFactory.openSession();
try {
    //通过sqlsession对象获取已映射的sql语句,并执行
  Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
} finally {
  session.close();
}
//创建SqlSessionFactory 对象
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtil.getSqlSessionFactory();
//通过SqlSessionFactory 对象获取SqlSession对象
SqlSession session = sqlSessionFactory.openSession();
try {
    //通过sqlsession对象获取已映射的sql语句,并执行
  BlogMapper mapper = session.getMapper(BlogMapper.class);
  Blog blog = mapper.selectBlog(101);
} finally {
  session.close();
}

 

5.mybatis-config.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="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

6.获取已映射的sql语句的方法:下面是两种不同的方式获取已映射的sql语句;

Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);

二、XML映射文件:

1、

  • cache – 对给定命名空间的缓存配置。
  • cache-ref – 对其他命名空间缓存配置的引用。
  • resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。
  • parameterMap – 已被废弃!老式风格的参数映射。更好的办法是使用内联参数,此元素可能在将来被移除。文档中不会介绍此元素。
  • sql – 可被其他语句引用的可重用语句块。
  • insert – 映射插入语句
  • update – 映射更新语句
  • delete – 映射删除语句
  • select – 映射查询语句

2、myBatis中,接受参数使用#{}和${}的区别。#会创建一个 PreparedStatement 参数占位符并安全地设置参数,就像使用sql语句中的?。使用$符,不会修改和转义字符串。

3、myBatis结果映射:

    (1)ResultMap 的简单实例:配置列对应结果集。

<resultMap id="userResultMap" type="User">
  <id property="id" column="user_id" />
  <result property="username" column="user_name"/>
  <result property="password" column="hashed_password"/>
</resultMap>

     (2)使用ResultMap:

<select id="selectUsers" resultMap="userResultMap">
  select user_id, user_name, hashed_password
  from some_table
  where id = #{id}
</select>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值