码迷,mamicode.com
首页 > 移动开发 > 详细

mybatis(一) mapper动态代理

时间:2017-08-30 23:36:13      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:update   int   返回   传参数   set   实体类   简单   插入   from   

  因为dao开发,会每次创建实体类对象,会传入id等固定查询值,存在硬编码问题,所以采用mapper动态代理(不用创建实体类对象,只需要接口,由mapper自动生成)

与之前mybatis(一)步骤一样,但是需要将mapper.xml文件作出修改:

  namespace:必须是接口类的全路径 (<mapper namespace="">)

  id:必须是接口的方法名(<select id=""/>)

  parameterType:必须是接口方法里面的参数类型

  resultType:必须是接口方法的返回值(若返回list<T>集合类型,则必须是T泛型所代表的实体类)

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">
<!-- sql语句映射,namespace是为了隔离sql语句 -->
<!-- mapper动态代理方式 -->
<!--namespace与mapper接口的类路径相同 -->
<!-- mapper接口方法名与mapper的id相同 -->
<!-- mapper接口方法的参数 与 parameterType相同 -->
<!-- mapper接口方法的返回类型和resultType相同 -->
<mapper namespace="com.xr.mybatis1.User">


<!-- sql查询操作 ,resultType:结果返回类型 #{}表示占位符,可以防止sql注入-->
<select id="selectById" resultType="com.xr.mybatis.User" parameterType="int">
select * from uu where id=#{id}
</select>
<select id="selectByName" resultType="com.xr.mybatis.User" parameterType="java.lang.String">
select * from uu where name like ‘%${value}%‘
</select>


<!-- 插入数据 -->
<insert id="insert" parameterType="com.xr.mybatis.User">
<!-- <selectKey keyProperty="id" order="AFTER">
select LAST_INSERT_ID()
</selectKey> -->
insert into uu(name,money) values(#{name},#{money})
</insert>

<!-- 删除数据 -->
<delete id="delete">
delete from uu where id=#{id}
</delete>

<!-- 修改数据 -->
<update id="update" parameterType="com.xr.mybatis.User">
update uu set name=#{name} where id=#{id}
</update>
</mapper>

总结:

mybatis 可以解决的jdbc问题:

1:jdbc每次都有加载驱动,创建连接等步骤 ------SqlMapConfig.xml中,使用jdbc事物,连接池处理

2:修改sql语句,就会修改java代码-----使用mapper,xml文件,映射sql语句

3:jdbc传参数太麻烦,因为sql语句的where条件不一定,参数需要和占位符一一对应-----mybatis自动将java对象映射至sql语句,通过statement中的parameterType指定

4:对结果集解析太麻烦,sql变化将导致解析代码变化,且解析前需要遍历-----mybatis自动将sql执行结果映射至java对象,通过statement的resultType指定

mybatis优点:轻量级的框架,简单,方便,可编写原生态的sql,控制sql执行性能,灵活度很高。(必须要求编写sql语句)

 

mybatis(一) mapper动态代理

标签:update   int   返回   传参数   set   实体类   简单   插入   from   

原文地址:http://www.cnblogs.com/ruerror/p/7455765.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!