【Mybatis学习】Mybatis映射器
来源:互联网 发布:殷嘉恩 let it go 编辑:程序博客网 时间:2024/05/29 08:59
映射器
1.映射器主要元素
2.select
也可返回int、double、float,即查询出数据库中特定的字段信息。
注意:不能与resultMap同时使用。比如根据主键id查找某条实体对象、查询所有数据信息的数量int等。resultMap映射集一般把某一实体的对象属性与表中列一一对应起来,可以重复引用。useCache启动二级缓存开关,是否把此次结果缓存取布尔值true/false,默认true。
2.1简单查询
BookMapper mapper = session.getMapper(BookMapper.class);int all = mapper.countAllByAuthor("qqq");System.out.println(all);
public int countAllByAuthor(String author);//根据作者名模糊统计数量参数为String类型,返回结果为int类型。
<select id="countAllByAuthor" resultType="int" parameterType="String">select COUNT(*) as totalfrom bookwhere author like concat('%',#{author},'%')</select>
2.2 自动映射
上篇文章中介绍到autoMappingBehavior参数,当不为NONE时将提供自动映射功能,只要返回的SQL列名和JavaBean属性一致就能自动对应匹配。
定义查询语句:
<select id="getById" resultType="cn.wsz.mybatis.domain.Book" parameterType="Long">select id, name, author, price, des, datefrom bookwhere id = #{id}</select>定义mapper方法
public Book getById(Long id);获取方法:
BookMapper mapper = session.getMapper(BookMapper.class);Book book = mapper.getById(10L);System.out.println(book.toString());获取结果:
Book [id=10, name=87, author=87, price=5.0, des=87, date=null]
2.3 sql
利用自动映射,可以简化查询结果集。比如以下定义实体类的属性列,也可以在其他地方重复引用。注意:对应属性是否一致。如果POJO采用驼峰命名,数据库列每一个单词都用下划线分隔,可以设置mapUnderscoreToCamelCase为true,便能自动映射
mybatis配置文件增加:
<settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>
定义sql:
POJO属性:
<sql id="Base_Column">id,name,author,real_name,price,des,date</sql>
POJO属性:
@Setter@Getterprivate long id;@Setter@Getterprivate String name;@Setter@Getterprivate String author;@Setter@Getterprivate String realName;@Setter@Getterprivate float price;@Setter@Getterprivate String des;@Setter@Getterprivate Date date;
在查询语句中引用sql:
<select id="findOne" resultType="cn.wsz.mybatis.domain.Book" parameterType="Long">select <include refid="Base_Column"/>from bookwhere id = #{id}</select>mapper接口方法:
public Book findOne(Long id);查询方法:
BookMapper mapper = session.getMapper(BookMapper.class);Book book = mapper.findOne(14L);System.out.println(book.toString());查询结果:
Book{id=14, name='88', author='88', realName='14', price=5.0, des='88', date=Tue Nov 07 21:24:23 CST 2017}
2.4 resultMap
<resultMap type="cn.wsz.mybatis.domain.Book" id="BaseResultMap"> //唯一标识id<id property ="id" column="id"/>//主键<result property="name" column="name"/>//其他<result property="author" column="author"/><result property="realName" column="real_name"/><result property="price" column="price"/><result property="des" column="des"/><result property="date" column="date"/></resultMap>2.5传递多个参数
map传递参数<select id="findByMap" parameterType="map" resultMap="BaseResultMap">select <include refid="Base_Column"/>from bookwhere author like concat('%',#{author},'%') or name like concat('%',#{name},'%')</select>
public List<Book> findByMap(Map<String,Object> map);
BookMapper mapper = session.getMapper(BookMapper.class);Map<String,Object> map = new HashMap<String,Object>();map.put("author","q");map.put("name","a");List<Book> list = mapper.findByMap(map);System.out.println(list.size());使用注解传递参数
<select id="findByAno" resultMap="BaseResultMap">select <include refid="Base_Column"/>from bookwhere author like concat('%',#{author},'%') or name like concat('%',#{name},'%')</select>
public List<Book> findByAno(@Param("author")String author,@Param("name")String name);
BookMapper mapper = session.getMapper(BookMapper.class);List<Book> list = mapper.findByAno("q","a");System.out.println(list.size());使用JavaBean传递参数
<select id="findByJavaBean" resultMap="BaseResultMap" parameterType="cn.wsz.mybatis.domain.Book">select <include refid="Base_Column"/>from bookwhere author like concat('%',#{author},'%') or name like concat('%',#{name},'%')</select>
public List<Book> findByJavaBean(Book book);
BookMapper mapper = session.getMapper(BookMapper.class);Book book = new Book();book.setAuthor("q");book.setName("a");List<Book> list = mapper.findByJavaBean(book);System.out.println(list.size());
3.insert
提供主键回填,可以获取新增主键id
<insert id="insertBook" useGeneratedKeys="true" keyProperty="id" parameterType="cn.wsz.mybatis.domain.Book"> insert into book(id,name,author,price,des,date) values(#{id},#{name},#{author},#{price},#{des},#{date}) </insert>
<insert id="batchInsert"> insert into book(id,name,author,price,des,date) values <foreach item="item" index="key" collection="list" open="" separator="," close=""> (#{item.id},#{item.name},#{item.author},#{item.price},#{item.des},#{item.date}) </foreach> </insert>4.update
<update id="updateBook" parameterMap="book"> update book set name = #{name},author = #{author},price = #{price},des = #{des} where id = #{id} </update>
5.delete
<delete id="deleteById" parameterType="java.lang.Long"> delete from book where id = #{id} </delete> <delete id="batchDelete"> delete from book where id in <foreach collection="list" item="id" index="key" open="(" separator="," close=")"> #{id} </foreach> </delete>
insert、update、delete方法请查阅前面的文章,此处不再赘述。
阅读全文
0 0
- 【Mybatis学习】Mybatis映射器
- MyBatis 学习-映射
- MyBatis学习--高级映射
- Mybatis深入学习之映射器XML
- Mybatis--映射器注解
- MyBatis-映射器
- Mybatis映射器
- MyBatis四映射器
- mybatis--映射器
- mybatis-映射器-select
- Mybatis映射器
- Mybatis 映射器
- MyBatis映射器
- MyBatis 映射器
- mybatis映射器注解
- MyBatis学习四:高级映射
- Mybatis映射文件写法学习
- mybatis学习之输入映射
- 百度地图api实现路线规划之步行驾车
- Java 520.1314表白
- 最短路大全
- React学习笔记_React-Redux 的用法
- 20171107_VMware12_ubuntu16.04.3LTS_英文版安装中文输入法ibus
- 【Mybatis学习】Mybatis映射器
- 查找不重复的统计数据的sql语句的写法
- PAT (Basic Level) Practise (中文)1029. 旧键盘(20)
- 解决idea2017创建maven项目最后编译报错找不到StringUtils类
- 最小生成树
- Latex论文中用到的花体字
- 数据挖掘_基于jaccard的相似度算法
- Linux的环境变量文件位置
- typeof与instanceof操作符