mybatis 之动态SQL

简介:

一、Mapper XML 映射文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<? 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">
< mapper  namespace = "com.liu.mapper.UserInfoMapper" >
     <!-- property对应实体类属性 column 对应着数据库字段 -->
     < resultMap  type = "UserInfo"  id = "userMap" >
         < result  property = "userId"  column = "user_id" ></ result >
         < result  property = "userName"  column = "user_name" ></ result >
         < result  property = "userSex"  column = "user_sex" ></ result >
     </ resultMap >
     < select  id = "selectUser"  parameterType = "UserInfo"  resultMap = "userMap" >
         select * from user_info where 1=1
         < if  test = "userId!=null" >
             and user_id =#{userId}
         </ if >
         < if  test = "userName!=null and userName!=''" >
             and user_name like #{userName}
         </ if >
         < if  test = "userSex!=null and userSex!=''" >
             and user_sex = #{userSex}
         </ if >
     </ select >
     < select  id = "selectUser2"  parameterType = "UserInfo"  resultMap = "userMap" >
         select * from user_info where 1=1
         < choose >
             < when  test = "userId!=null" >
                 and user_id =#{userId}
             </ when >
             < when  test = "userName!=null and userName!=''" >
                 and user_name like #{userName}
             </ when >
             < otherwise >
                 and user_sex = #{userSex}
             </ otherwise >
         </ choose >
     </ select >
     < select  id = "selectUser3"  parameterType = "UserInfo"  resultMap = "userMap" >
         select * from user_info
         < where >
             < if  test = "userId!=null" >
                 and user_id =#{userId}
             </ if >
             < if  test = "userName!=null and userName!=''" >
                 and user_name like #{userName}
             </ if >
             < if  test = "userSex!=null and userSex!=''" >
                 and user_sex = #{userSex}
             </ if >
         </ where >
     </ select >
     < select  id = "selectUser4"  parameterType = "UserInfo"  resultMap = "userMap" >
         select * from user_info
         < trim  prefix = "where"  prefixOverrides = "and|or" >
             < if  test = "userId!=null" >
                 and user_id =#{userId}
             </ if >
             < if  test = "userName!=null and userName!=''" >
                 and user_name like #{userName}
             </ if >
             < if  test = "userSex!=null and userSex!=''" >
                 and user_sex = #{userSex}
             </ if >
         </ trim >
     </ select >
     
     < update  id = "updateUser"  parameterType = "UserInfo" >
         update user_info 
         < set >
             < if  test = "userName!=null and userName!=''" >
                  user_name=#{userName},
              </ if >
              < if  test = "userSex!=null and userSex!=''" >
                  user_sex=#{userSex}, 
              </ if >
         </ set >
         where user_id=#{userId}
     </ update >
     < select  id = "selectUser5"  parameterType = "UserInfo"  resultMap = "userMap" >
         select * from user_info where user_id in 
         < foreach  collection = "userIds"  item = "item"  open = "("   separator = ","  close = ")"  >
             #{item}
         </ foreach >    
     </ select >
</ mapper >

二、Mapper接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package  com.liu.mapper;
import  java.util.HashMap;
import  java.util.List;
import  org.apache.ibatis.annotations.Delete;
import  org.apache.ibatis.annotations.Insert;
import  org.apache.ibatis.annotations.Param;
import  org.apache.ibatis.annotations.Result;
import  org.apache.ibatis.annotations.Results;
import  org.apache.ibatis.annotations.Select;
import  org.apache.ibatis.annotations.Update;
import  com.liu.po.UserInfo;
public  interface  UserInfoMapper {
     
     public  List<UserInfo> selectUser(UserInfo user);
     public  List<UserInfo> selectUser2(UserInfo user);
     
     public  List<UserInfo> selectUser3(UserInfo user);
     
     public  List<UserInfo> selectUser4(UserInfo user);
     
     public  List<UserInfo> selectUser5(UserInfo user);
     
     public  int  updateUser(UserInfo user);
}

二、测试类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package  com.liu;
import  java.util.ArrayList;
import  java.util.List;
import  org.apache.ibatis.session.SqlSession;
import  org.junit.After;
import  org.junit.Before;
import  org.junit.Test;
import  com.liu.mapper.UserInfoMapper;
import  com.liu.po.UserInfo;
import  com.liu.utils.DBFactory;
public  class  UserTest {
     SqlSession session =  null ;
     UserInfoMapper mapper =  null ;
     @Before
     public  void  testBefore() {
         session = DBFactory.getSession();
         mapper = session.getMapper(UserInfoMapper. class );
     }
     @After
     public  void  testAfter() {
         session.close();
     }
     
     @Test
     public  void  selectUser(){
         UserInfo user =  new  UserInfo();
         user.setUserId( 4 );
         user.setUserName( "%他爸%" );
         user.setUserSex( "男" );
         List<UserInfo> list = mapper.selectUser(user);
         for (UserInfo u:list){
             System.out.println(u);
         }
     }
     
     @Test
     public  void  selectUser2(){
         UserInfo user =  new  UserInfo();
         //user.setUserId(4);
         //user.setUserName("%他爸%");
         //user.setUserSex("男");
         List<UserInfo> list = mapper.selectUser2(user);
         for (UserInfo u:list){
             System.out.println(u);
         }
     }
     
     @Test
     public  void  selectUser3(){
         UserInfo user =  new  UserInfo();
         user.setUserId( 4 );
         user.setUserName( "%他爸%" );
         user.setUserSex( "男" );
         List<UserInfo> list = mapper.selectUser3(user);
         for (UserInfo u:list){
             System.out.println(u);
         }
     }
     
     
     @Test
     public  void  selectUser4(){
         UserInfo user =  new  UserInfo();
         //user.setUserId(4);
         //user.setUserName("%他爸%");
         user.setUserSex( "男" );
         List<UserInfo> list = mapper.selectUser4(user);
         for (UserInfo u:list){
             System.out.println(u);
         }
     }
     
     
     @Test
     public  void  selectUser5(){
         UserInfo user =  new  UserInfo();
         
         List<Integer> plist =  new  ArrayList<Integer>();
         plist.add( 2 );
         plist.add( 4 );
         
         user.setUserIds(plist);
     
         List<UserInfo> list = mapper.selectUser5(user);
         for (UserInfo u:list){
             System.out.println(u);
         }
     }
     
     @Test
     public  void  updateUser(){
         UserInfo user =  new  UserInfo();
         user.setUserId( 4 );
         user.setUserName( "孩子她妈" );
         user.setUserSex( "男" );
         
         int  count = mapper.updateUser(user);
         session.commit();
         System.out.println(count);
     }
}




本文转自 l363130002 51CTO博客,原文链接:http://blog.51cto.com/liuyj/1609913


相关文章
|
1天前
|
SQL Java 数据库连接
mybatis动态sql
mybatis动态sql
|
3天前
|
SQL Java 数据库连接
MyBatis #与$的区别以及动态SQL
MyBatis #与$的区别以及动态SQL
7 0
|
5天前
|
SQL Java 数据库连接
【mybatis】动态sql之批量增删改查
【mybatis】动态sql之批量增删改查
10 0
|
15天前
|
SQL 安全 Java
【Mybatis】Mybatis如何防止sql注入
【Mybatis】Mybatis如何防止sql注入
|
16天前
|
SQL Java 数据库连接
【Mybatis】动态sql之sql的复用
【Mybatis】动态sql之sql的复用
12 0
|
2月前
|
SQL Java 数据库连接
挺详细的spring+springmvc+mybatis配置整合|含源代码
挺详细的spring+springmvc+mybatis配置整合|含源代码
69 1
|
2月前
|
druid Java 数据库连接
Spring Boot3整合MyBatis Plus
Spring Boot3整合MyBatis Plus
48 1
|
10天前
|
SQL Java 数据库连接
15:MyBatis对象关系与映射结构-Java Spring
15:MyBatis对象关系与映射结构-Java Spring
30 4
|
13天前
|
XML Java 数据库连接
Spring Boot与MyBatis:整合与实战
【4月更文挑战第29天】在现代的Java Web应用开发中,持久化层框架扮演了至关重要的角色。MyBatis作为一款优秀的持久化框架,被广泛应用于Java开发中。Spring Boot提供了简化开发流程的功能,而与MyBatis的整合也变得更加便捷。
24 0
|
17天前
|
Java 数据库连接 数据库
spring+mybatis_编写一个简单的增删改查接口
spring+mybatis_编写一个简单的增删改查接口
16 2