MyBatis 学习笔记

一.MyBatis系统的核心设置——XML配置文件 Configuration.xml

environment 元素体中包含对事务管理和连接池的环境配置。mappers元素是包含所有 mapper 映射器。

<?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>

二.从XML中构建SqlSessionFactory,通过SqlSessionFactory打开一个数据库回话,同时开启事务

<span style="white-space:pre">	</span>public SqlSession getSqlSession() throws IOException{
		// 通过配置文件获得数据库连接信息
		Reader reader = Resources.getResourceAsReader("com/hdu/keynes/config/Configuration.xml");
		// 通过配置文件信息构建一个SqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
		// 通过SqlSessionFactory打开一个数据库回话,同时开启事务
		SqlSession sqlSession = sqlSessionFactory.openSession(true);
		return sqlSession;
	}

三.用 SqlSession实例来直接执行已映射的SQL语句

SqlSession session = sqlSessionFactory.openSession();
try {
  Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
} finally {
  session.close();
}


四.基于XML映射语句

1. .xml文件写在了Configuration.xml的<mapper>标签中

<mapper namespace="org.mybatis.example.BlogMapper">

  <select id="selectBlog" parameterType="int" <span class="atn" style="white-space: normal; font-family: Arial, Helvetica, sans-serif;"></span>resultType="hashmap"<span class="atv" style="white-space: normal; font-family: Arial, Helvetica, sans-serif;"></span>>
    select * from Blog where id = #{id}
  </select>

</mapper>

2. parameterType="int" 为简单的命名参数映射。参数类型被设置为“int” ,因此,这个参数可以被设置成任何内容。

如果你传递了一个复杂的对象,那么 MyBatis 的处理方式就会有一点不同。比如:

<insert id="insertUser" parameterType="User" resultType="hashmap">
  insert into users (id, username, password)
  values (#{id}, #{username}, #{password})
</insert>

如果 User 类型的参数对象传递到了语句中, username 和 password 属性将会被查找, id、 然后它们的值就被传递到预处理语句的参数中。 

3. resultType="hashmap"。所有列被自动映射到HashMap的键上,这由resultType属性指定。这在很多情况下是有用的,但是HashMap不能很好描述一个领域模型。

package com.hdu.keynes;
public class User {
  private int id;
  private String username;
  private String hashedPassword;
  
  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 String getHashedPassword() {
    return hashedPassword;
  }
  public void setHashedPassword(String hashedPassword) {
    this.hashedPassword = hashedPassword;
  }
}

这样的一个JavaBean可以被映射到结果集,

<pre name="code" class="html"><typeAliases>
<span style="white-space:pre">	</span><typeAlias type="com.hdu.keynes.User" alias="User"/>
</typeAliases>

<select id="selectUsers" parameterType="int" resultType=User">
  select id, username, hashedPassword
  from some_table
  where id = #{id}
</select>

 typeAliases 类型别名是为 Java 类型命名一个短的名字。 它只和 XML 配置有关, 只用来减少类完全限定名的多余部分。使用这个配置, “User”可以任意用来替代“com.hdu.keynes.User”所使用的地方。  


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值