開發工具: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&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&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 }