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的一些片段

Mybatis 学习笔记总结

Mybatis学习笔记:动态SQL

SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper

mybatis动态sql片段与分页,排序,传参的使用

MyBatis动态SQL标签用法