mapper xml的if标签使用

开发工具:idea

版本工具:maven

1.pom.xml

 1 <dependency>
 2       <groupId>junit</groupId>
 3       <artifactId>junit</artifactId>
 4       <version>4.11</version>
 5       <scope>test</scope>
 6     </dependency>
 7 
 8     <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
 9     <dependency>
10       <groupId>org.mybatis</groupId>
11       <artifactId>mybatis</artifactId>
12       <version>3.3.0</version>
13     </dependency>
14 
15     <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
16     <dependency>
17       <groupId>mysql</groupId>
18       <artifactId>mysql-connector-java</artifactId>
19       <version>8.0.16</version>
20     </dependency>
21 
22       <!--日志需要-->
23       <dependency>
24           <groupId>log4j</groupId>
25           <artifactId>log4j</artifactId>
26           <version>1.2.17</version>
27       </dependency>
28       <dependency>
29           <groupId>org.slf4j</groupId>
30           <artifactId>slf4j-api</artifactId>
31           <version>1.7.30</version>
32       </dependency>
33       <dependency>
34           <groupId>org.slf4j</groupId>
35           <artifactId>slf4j-log4j12</artifactId>
36           <version>1.7.7</version>
37       </dependency>

2.Role.java

 1 package com.lenovo.pojo;
 2 
 3 public class Role {
 4 
 5     private Long id;//主键
 6     private String roleName;//角色名称
 7     private String note;//备注
 8 
 9     public Long getId() {
10         return id;
11     }
12 
13     public void setId(Long id) {
14         this.id = id;
15     }
16 
17     public String getRoleName() {
18         return roleName;
19     }
20 
21     public void setRoleName(String roleName) {
22         this.roleName = roleName;
23     }
24 
25     public String getNote() {
26         return note;
27     }
28 
29     public void setNote(String note) {
30         this.note = note;
31     }
32 
33     @Override
34     public String toString() {
35         return "Role{" +
36                 "id=" + id +
37                 ", roleName='" + roleName + '\'' +
38                 ", note='" + note + '\'' +
39                 '}';
40     }
41 }

3.RoleMapper.java

 1 package com.lenovo.dao;
 2 
 3 import com.lenovo.pojo.Role;
 4 import org.apache.ibatis.annotations.Param;
 5 
 6 public interface RoleMapper {
 7 
 8     //查询单个角色
 9     public Role findRole(@Param("roleName") String roleName);
10 
11 }

4.SqlSessionFactoryUtil.java

 1 package com.lenovo.util;
 2 
 3 import org.apache.ibatis.io.Resources;
 4 import org.apache.ibatis.session.SqlSession;
 5 import org.apache.ibatis.session.SqlSessionFactory;
 6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 7 
 8 import java.io.IOException;
 9 import java.io.InputStream;
10 
11 public class SqlSessionFactoryUtil {
12 
13     //SqlSessionFactory对象
14     private static SqlSessionFactory sqlSessionFactory = null;
15     //类线程锁
16     private static final Class CLASS_LOCK = SqlSessionFactoryUtil.class;
17 
18     //私有化构造函数
19     private SqlSessionFactoryUtil(){};
20 
21     //构建SqlSessionFactory
22     public static SqlSessionFactory initSqlSessionFactory(){
23         String resource = "mybatis-config.xml";
24         InputStream inputStream = null;
25         try {
26             inputStream = Resources.getResourceAsStream(resource);
27         } catch (IOException e) {
28             e.printStackTrace();
29         }
30 
31         synchronized (CLASS_LOCK){
32             if (sqlSessionFactory == null){
33                 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
34             }
35         }
36         return sqlSessionFactory;
37     }
38 
39     //打开SqlSession
40     public static SqlSession openSqlSession(){
41         if (sqlSessionFactory == null){
42             initSqlSessionFactory();
43         }
44         return sqlSessionFactory.openSession();
45     }
46 
47 }

5.RoleMapper.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD mapper 3.0//EN"
 3         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 4 <mapper namespace="com.lenovo.dao.RoleMapper">
 5     
 6     <resultMap id="roleResultMap" type="com.lenovo.pojo.Role">
 7         <id property="id" column="id" javaType="Long" jdbcType="BIGINT"/>
 8         <result property="roleName" column="role_name" javaType="String" jdbcType="VARCHAR"/>
 9         <result property="note" column="note" javaType="String" jdbcType="VARCHAR"/>
10     </resultMap>
11 
12     <select id="findRole" parameterType="string" resultMap="roleResultMap">
13         select id,role_name,note from t_role where 1=1
14         <if test="roleName != null and roleName != ''">
15             and role_name like concat('%', #{roleName}, '%')
16         </if>
17     </select>
18 </mapper>

6.jdbc.properties

1 #数据库配置文件
2 driver=com.mysql.cj.jdbc.Driver
3 url=jdbc:mysql://localhost:3306/mysql?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
4 username=root
5 password=root

7.log4j.properties

log4j.rootLogger=DEBUG,stdout
log4j.logger.org.mybatis=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n

8.mybatis-config.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 3         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 4 <!--test1练习使用的mybatis核心配置文件-->
 5 <configuration>
 6     <!-- 定义别名 -->
 7     <typeAliases>
 8         <!--定义别名role,代表了com.lenovo.test1.pojo.Role,这样我们就可以在Mybatis上下文中引用它了-->
 9         <typeAlias type="com.lenovo.pojo.Role" alias="role"/>
10     </typeAliases>
11 
12     <!--定义数据库信息,默认使用development数据库构建环境-->
13     <environments default="development">
14         <environment id="development">
15             <!--采用jdbc事务管理-->
16             <transactionManager type="JDBC"/>
17             <!--配置数据库链接信息-->
18             <dataSource type="POOLED">
19                 <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
20                 <property name="url" value="jdbc:mysql://localhost:3306/mysql?serverTimezone=Asia/Shanghai&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=false"/>
21                 <property name="username" value="root"/>
22                 <property name="password" value="root"/>
23             </dataSource>
24         </environment>
25     </environments>
26 
27     <!--配置映射器,这里引入了一个xml,它的作用是提供SQL和SQL对POJO的映射规则定义,它包含了映射器里面的信息。mybatis将解析这个xml,来为我们生成映射器-->
28     <mappers>
29         <mapper resource="mapper\RoleMapper.xml" />
30     </mappers>
31 </configuration>

9.MybatisExample.java

 1 package com.lenovo;
 2 
 3 import com.lenovo.dao.RoleMapper;
 4 import com.lenovo.pojo.Role;
 5 import com.lenovo.util.SqlSessionFactoryUtil;
 6 import org.apache.ibatis.session.SqlSession;
 7 
 8 /**
 9  * select标签中的if标签测试
10  */
11 public class MybatisExample {
12 
13     public static void main(String[] args) {
14         SqlSession sqlSession = SqlSessionFactoryUtil.initSqlSessionFactory().openSession();
15         RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
16         Role role = roleMapper.findRole("zhang");
17         System.out.println("角色信息" + role.toString());
18     }
19 
20 }

 

posted @ 2022-03-11 17:11  永远的希望  阅读(2745)  评论(0编辑  收藏  举报