MyBatis学习
Posted 功不唐捐 玉汝于成
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis学习相关的知识,希望对你有一定的参考价值。
一、输入输出映射
1、输入类型parameterType
1.1 传递基本类型
1.2 传递POJO对象
使用ONGL表达式解析对象字段的值,#{}或者${}中的值为POJO属性的名称 user.username
1.3 传递POJO包装对象QueryVo
查询条件是多个查询条件的综合
1.3.1 QueryVo
public class QueryVo { private User user; public User getUser() { returnuser; } publicvoid setUser(User user) { this.user = user; } }
1.3.2 UserMapper.xml
<!-- 使用包装类型查询用户 使用ognl从对象中取属性值,如果是包装对象可以使用.操作符来取内容部的属性 --> <select id="findUserByQueryVo" parameterType="com.guojie.pojo.QueryVo" resultType="user"> SELECT * FROM user where username like ‘%${user.username}%‘ and sex=#{user.sex} </select>
1.3.3 UserMapper接口中
public List<User> findUserByQueryVo(QueryVo vo);
1.3.4 测试
@Test public void testFindUserByQueryVo() throws Exception { SqlSession sqlSession = sessionFactory.openSession(); //获得mapper的代理对象,通过getMapper方法实例化接口 UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//创建QueryVo对象 QueryVo queryVo = new QueryVo(); //创建user对象 User user = new User(); user.setUsername("刘"); user.setSex("1"); queryVo.setUser(user);
//根据queryvo查询用户 List<User> list = userMapper.findUserByQueryVo(queryVo); System.out.println(list); sqlSession.close();
}
2、输出类型resultType
2.1 输出基本类型
2.1.1 UserMapper.xml
<!-- 获取用户列表总数 --> <select id="findUserCount" resultType="int"> select count(*) from user </select>
2.1.2 UserMapper接口
public int findUserCount() throws Exception;
2.1.3 测试
Public void testFindUserCount() throws Exception{ //获取session SqlSession session = sqlSessionFactory.openSession(); //获取mapper接口实例 UserMapper userMapper = session.getMapper(UserMapper.class); int count = userMapper.findUserCount(); //关闭session session.close(); }
2.2 输出POJO对象
2.3 输出POJO列表
3、resultMap(用List可取代)
resultType需要POJO属性和sql查询的列名一致才能将查询结果映射为POJO
resultMap在POJO属性和sql查询的列名不一致时也行,可用于映射复杂类型的POJO
<select id="selectOrderList" resultMap="orders"> select user_id, user_name from user </select>
<resultMap type="Orders" id="orders"> <result column="user_id" property="userId"> </resultMap>
id:结果集的唯一标识
property:POJO类的属性
column:sql字段
二、动态sql
通过MyBatis提供的各种标签方法实现动态拼接sql
POJO:不按MVC分层,只有JavaBean的一些属性和setter&getter
Domain:不按MVC分层,只有JavaBean的一些属性和setter&getter
PO:用于持久层,在增加或者修改的时候,从页面直接传入action中,其中JavaBean类名等于表名,属性名等于字段名,还有对应的setter&getter
VO:View Object表现层对象,主要用于在高级查询中从页面接收传过来的各种条件参数,好处是扩展性强
BO:在Service,现在基本不用
以上是关于MyBatis学习的主要内容,如果未能解决你的问题,请参考以下文章
markdown [mybatis参考]关于mybatis #mybatis的一些片段