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语句执行之前插入;after :insert执行之后插入), 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接口开发需要遵循以下规范:
- Mapper.xml文件中的namespace与mapper接口的类路径名相同。
- Mapper接口方法名和Mapper.xml中定义的每个crud语句的id相同。
- Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType输入参数类型相同。
- 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
- mybatis学习(一)
- MyBatis学习(一)
- MyBatis学习(一)
- 学习Mybatis(一)
- mybatis学习(一)
- mybatis学习(一)
- mybatis学习(一)
- MyBatis学习(一)- 搭建MyBatis项目
- MyBatis学习(一)- 搭建MyBatis项目
- (一)mybatis学习之初识mybatis
- Mybatis学习笔记--(一)Mybatis基础
- MyBatis学习笔记(一)--初识MyBatis
- MyBatis入门学习(一)
- mybatis学习笔记(一)
- mybatis初步学习(一)
- Mybatis学习笔记(一)
- MyBatis入门学习(一)
- MyBatis入门学习(一)
- hdu 4282
- select、poll、epoll之间的区别总结[整理]
- 学习Linux的几点忠告
- 微信开发 接口配置失败的坑新手注意
- JeffandDigits
- mybatis学习(一)
- I/O多路复用之select系统调用
- Windows7 64位 安装tensorflow
- jQuery中一些必须要知道的知识点总结--20个(上)
- Mybatis之入门Helloworld程序
- TCP/IP四层模型和OSI七层模型的概念
- jvm_demo_TestThread
- net.sf jsonobject将string转json时报错
- C++实现双向链表