mybatis学习(一)

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

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 mapper
PUBLIC "-//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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值