mybatis学习(一)

来源:互联网 发布:js导出excel 数字格式 编辑:程序博客网 时间:2024/06/05 18:46

一、占位符和拼接符(#{}和${})

1,#{} 占位符:如果传入的是基本数据类型(int,double...)那么#{}中的的变量名可以随便写,如果传入的是pojo类型,那么变量名必须是pojo对应的属性名。eg:insert into user (username,birthday) values(#{username},#{birthday})2,${}拼接符: 如果传入的是基本数据类型(int,double...)那么${}中的变量名必须是value,如果传入的是pojo类型那么${}中的变量名必须是pojo对应的属性名。

二、insert语句自增主键返回值

insert id="insertUser" parameterType="com.itcast.pojo.User">    <!--    select LAST_INSERT_ID() 执行该函数,返回数据库刚刚插入表中数据自增的主键的ID         keyProperty:将返回的主键传入pojo属性Id进行保存        order:相对于insert语句的执行顺序(before inset语句执行之前插入;afterinsert执行之后插入),        resultType:id的类型(对应传入参数user id属性)也就是keyProperty的返回值类型     -->    <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">        select LAST_INSERT_ID()    </selectKey>    insert into user (username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})</insert>注意:如果mysql使用uuid自增主键这里order是“BEFORE

三、Mapper动态代理开发方式

Mapper接口开发需要遵循以下规范:

  1. Mapper.xml文件中的namespace与mapper接口的类路径名相同。
  2. Mapper接口方法名和Mapper.xml中定义的每个crud语句的id相同。
  3. Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType输入参数类型相同。
  4. Mapper接口方法的输出类型必须和mapper.xml中定义的每个sql的resultType输出参数类型相同。

eg:(1)Mapper.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.mybatis.mapper.UserMapper"><!-- 根据id获取用户信息 -->    <select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User">        select * from user where id = #{id}    </select></mapper>

(2)mapper.java

/** * 用户管理mapper */Public interface UserMapper {    //根据用户id查询用户信息    public User findUserById(int id) throws Exception;}

(3)加载Mapper.xml文件

修改SqlMapConfig.xml文件:  <!-- 加载映射文件 -->  <mappers>    <mapper resource="mapper/UserMapper.xml"/>  </mappers>

(4)测试

Public class MapperTest extends TestCase {    private SqlSessionFactory sqlSessionFactory;    @Before    protected void setUp() throws Exception {        //mybatis配置文件        String resource = "sqlMapConfig.xml";        InputStream inputStream = Resources.getResourceAsStream(resource);        //使用SqlSessionFactoryBuilder创建sessionFactory        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);    }    @Test    Public void testFindUserById() throws Exception {        //获取session        SqlSession session = sqlSessionFactory.openSession();        //获取mapper接口的代理对象        UserMapper userMapper = session.getMapper(UserMapper.class);        //调用代理对象方法        User user = userMapper.findUserById(1);        System.out.println(user);        //关闭session        session.close();        }}

四、Mapper映射器(有三种)
(1)使用路径资源(如果有多个资源,需要一个个添加资源路径)

<mapper resource="sqlmap/User.xml" />

(2)使用Mapper类路径(如果有多个类,需要一个个添加类路径)

注意:这种方法要求mapper接口名称和mapper.xml映射文件名相同,并且在相同目录。

(3)使用包扫描的方式(扫描指定包名下的所有mapper文件)

<package name="cn.mybatis.mapper"/>注意:这种方法要求mapper接口和mapper.xml映射文件名相同,并且在相同目录。

五、源码

下载地址:http://download.csdn.net/detail/tianyejun6/9794731

0 0
原创粉丝点击