mybatis使用
第一步:pom.xml中加依赖和资源插件、
第二步:定义数据表的DAO接口
第三步:写对应数据表的mapper.xml文件
第四步:写主配置文件mybatis-config.xml(给出了连接数据库的信息)
通过获取sqlSession对象来执行sql语句
dao代理
mybatis提供代理:由mybatis创建dao接口的实现类,完成对sql语句的执行
其实现方式:
使用SqlSession对象的方法getMapper(dao.class)
例如:有一个UserDAO接口
SqlSession session = MybatisUtil.getSession();
UserDAO dao=session.getMapper(UserDAO.class);
User user=dao.selectUserById(4);
理解参数
通过java程序把数据传入到mapper文件中的sql语句的占位符的位置
DAO接口方法中有多个简单类型的参数用@Param来命名
DAO接口方法中使用一个对象作为参数
方法的形参是一个java对象。这个java对象表示多个参数。使用对象的属性值作为参数使用(对象中的属性有set和get方法,#{}中放属性名称)
表列名和java对象属性名不一样的解决方法
resultMap:
<!-- resultMap定义不同的表列名和对象属性名之间的映射关系
type:是类的全限定名称
<id>表示主键;column表示列名,property表示属性名
<result>非主键
最后在select标签中用resultMap=“id名称”,不用resultType
-->
<resultMap id="" type="">
<id column="" property=""></id>
<result column="" property=""></result>
<result column="" property=""></result>
</resultMap>
resultType:在sql查询语句时使用别名
如:select id as cid,name as cname from user
模糊查询like
直接在java程序中传值,如,”%李%”
动态sql:
同一个dao方法,根据不同的条件可以表示不同的sql语句,主要where部分有变化。
由mybatis提供的标签实现,主要有if, where, foreach, sql等
使用动态sql时,dao方法的形参 使用java对象
if标签
<if>
select * from user
where id=-1
<if test="name!=null and name!=''">
or name=#{name}
</if>
<if test="10>2">
or id=#{id}
</if>
where标签
改进if标签的缺陷来的
<select id="selectWhere" resultType="com.domain.User">
select * from user
<where>
<if test="name!=null and name!=''">
or name=#{name}
</if>
<if test="10>2">
or id=#{id}
</if>
</where>
</select>
foreach标签
可以循环数组,list集合,一般使用在in语句中
<select id="selectForeach" resultType="com.domain.User">
select * from user
<if test="list != null and list.size>0">
where id in
<foreach collection="list" open="(" close=")" separator="," item="u">
#{u.id}
</foreach>
</if>
</select>
sql标签
定义sql代码片段,在其他地方可以只用include来复用。
<sql id=”id名称”>
sql片段
</sql>
其他位置
<include refid=”id名称” />
使用数据库属性配置文件
把数据库配置信息放到一个单独的properties文件中,便于管理
PageHelper插件