码迷,mamicode.com
首页 > 其他好文 > 详细

MyBatis学习(二)

时间:2017-10-19 11:06:32      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:span   list   输出   type   nbsp   class   query   main   on()   

一、输入输出映射

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学习(二)

标签:span   list   输出   type   nbsp   class   query   main   on()   

原文地址:http://www.cnblogs.com/1989guojie/p/7691272.html

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