1 package com.itheima.mapper; 2 3 import com.github.pagehelper.Page; 4 import com.github.pagehelper.PageHelper; 5 import com.github.pagehelper.PageInfo; 6 import com.itheima.domain.User; 7 import org.apache.ibatis.io.Resources; 8 import org.apache.ibatis.session.SqlSession; 9 import org.apache.ibatis.session.SqlSessionFactory; 10 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 11 import org.junit.Test; 12 13 import java.io.IOException; 14 import java.io.InputStream; 15 import java.util.Arrays; 16 import java.util.Date; 17 import java.util.List; 18 19 public class UserMapperTest { 20 21 @Test 22 public void pageHelperTest() throws IOException { 23 //获取配置 24 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); 25 //创建SqlSessionFactory 26 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); 27 //创建SqlSession 28 SqlSession sqlSession = sqlSessionFactory.openSession(); 29 UserMapper mapper = sqlSession.getMapper(UserMapper.class); 30 31 //配置分页参数 32 Page page = PageHelper.startPage(3, 4); 33 34 //PageHelper只对紧跟着的第一个SQL语句起作用 35 ListbyCondition = mapper.findByCondition(new User()); 36 37 //获得分页相关参数 38 PageInfo userPageInfo = new PageInfo<>(byCondition); 39 40 //PageInfo实现了toString方法,不用我们自己打印 41 System.out.println(userPageInfo); 42 43 System.out.println("总页数=" + userPageInfo.getPages()); 44 System.out.println("总条数=" + userPageInfo.getTotal()); 45 System.out.println("当前页=" + userPageInfo.getPageNum()); 46 System.out.println("页大小=" + userPageInfo.getPageSize()); 47 System.out.println("当前页条数=" + userPageInfo.getSize()); 48 System.out.println("是否是首页=" + userPageInfo.isIsFirstPage()); 49 System.out.println("是否是末页=" + userPageInfo.isIsLastPage()); 50 System.out.println("是否有上一页=" + userPageInfo.isHasPreviousPage()); 51 System.out.println("是否有下一页=" + userPageInfo.isHasNextPage()); 52 System.out.println("上一页=" + userPageInfo.getPrePage()); 53 System.out.println("下一页=" + userPageInfo.getNextPage()); 54 System.out.println("首页=" + userPageInfo.getFirstPage()); 55 System.out.println("末页=" + userPageInfo.getLastPage()); 56 //默认显示几个页码 57 System.out.println("导航页码数=" + userPageInfo.getNavigatePages()); 58 //页码的数组 59 System.out.println("所有导航页码=" + Arrays.toString(userPageInfo.getNavigatepageNums())); 60 61 62 // List userList = mapper.findAll(); 63 // System.out.println(userList);//传回的并不是Collection中List的实现类,而是自定义List实现类,toString方法处理有区别 64 // for (User user : userList) { 65 // System.out.println(user); 66 // } 67 // userList.forEach(System.out::println); 68 sqlSession.close(); 69 } 70 71 72 @Test 73 public void saveTest() throws IOException { 74 //获取配置 75 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); 76 //创建SqlSessionFactory 77 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); 78 //创建SqlSession 79 SqlSession sqlSession = sqlSessionFactory.openSession(); 80 UserMapper mapper = sqlSession.getMapper(UserMapper.class); 81 //准备User 82 User user = new User(); 83 user.setUsername("xxx"); 84 user.setPassword("123"); 85 user.setBirthday(new Date()); 86 87 int rows = mapper.save(user); 88 sqlSession.commit(); 89 System.out.println(rows); 90 91 sqlSession.close(); 92 } 93 94 @Test 95 public void findByConditionTest() throws IOException { 96 //获取配置 97 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); 98 //创建SqlSessionFactory 99 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); 100 //创建SqlSession 101 SqlSession sqlSession = sqlSessionFactory.openSession(); 102 UserMapper mapper = sqlSession.getMapper(UserMapper.class); 103 104 //条件 105 User user = new User(); 106 user.setId(1); 107 // user.setUsername("lisi"); 108 // user.setPassword("123"); 109 110 ListuserList = mapper.findByCondition(user); 111 System.out.println(userList); 112 113 sqlSession.close(); 114 } 115 116 @Test 117 public void findByIdsTest() throws IOException { 118 //获取配置 119 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); 120 //创建SqlSessionFactory 121 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); 122 //创建SqlSession 123 SqlSession sqlSession = sqlSessionFactory.openSession(); 124 UserMapper mapper = sqlSession.getMapper(UserMapper.class); 125 126 // int[] ids = {1,2,3}; 127 Integer[] ids = {1,2,3}; 128 List userList = mapper.findByIds(ids); 129 System.out.println(userList); 130 131 sqlSession.close(); 132 } 133 134 @Test 135 public void findByIdTest() throws IOException { 136 //获取配置 137 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); 138 //创建SqlSessionFactory 139 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); 140 //创建SqlSession 141 SqlSession sqlSession = sqlSessionFactory.openSession(); 142 UserMapper mapper = sqlSession.getMapper(UserMapper.class); 143 144 User user = mapper.findById(1); 145 System.out.println(user); 146 147 sqlSession.close(); 148 } 149 150 @Test 151 public void findAllTest() throws IOException { 152 //获取配置 153 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); 154 //创建SqlSessionFactory 155 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); 156 //创建SqlSession 157 SqlSession sqlSession = sqlSessionFactory.openSession(); 158 UserMapper mapper = sqlSession.getMapper(UserMapper.class); 159 160 List userList = mapper.findAll(); 161 System.out.println(userList); 162 163 sqlSession.close(); 164 } 165 }
1 package com.itheima.mapper; 2 3 import com.itheima.domain.User; 4 5 import java.util.List; 6 7 public interface UserMapper { 8 9 ListfindByCondition(User condition); 10 11 List findAll(); 12 13 // List findByIds(int[] ids); 14 ListfindByIds(Integer[] ids); 15 16 User findById(int id); 17 18 //如果不写返回值,则调用方法不会有影响行数返回值 19 int save(User user); 20 }
1 package com.itheima.handler; 2 3 import org.apache.ibatis.type.BaseTypeHandler; 4 import org.apache.ibatis.type.JdbcType; 5 6 import java.sql.CallableStatement; 7 import java.sql.PreparedStatement; 8 import java.sql.ResultSet; 9 import java.sql.SQLException; 10 import java.util.Date; 11 12 public class DateTypeHandler extends BaseTypeHandler{ 13 @Override 14 public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException { 15 preparedStatement.setLong(i, date.getTime()); 16 } 17 18 @Override 19 public Date getNullableResult(ResultSet resultSet, String s) throws SQLException { 20 return new Date(resultSet.getLong(s)); 21 } 22 23 @Override 24 public Date getNullableResult(ResultSet resultSet, int i) throws SQLException { 25 return new Date(resultSet.getLong(i)); 26 } 27 28 @Override 29 public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException { 30 return new Date(callableStatement.getLong(i)); 31 } 32 }
1 package com.itheima.domain; 2 3 import java.util.Date; 4 5 /* 6 CREATE TABLE `user` ( 7 `id` int(11) NOT NULL AUTO_INCREMENT, 8 `username` varchar(50) DEFAULT NULL, 9 `password` varchar(50) DEFAULT NULL, 10 `birthday` bigint(20) DEFAULT NULL, 11 PRIMARY KEY (`id`) 12 ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; 13 */ 14 public class User { 15 private int id; 16 private String username; 17 private String password; 18 private Date birthday; 19 20 public User() { 21 } 22 23 public int getId() { 24 return id; 25 } 26 27 public void setId(int id) { 28 this.id = id; 29 } 30 31 public String getUsername() { 32 return username; 33 } 34 35 public void setUsername(String username) { 36 this.username = username; 37 } 38 39 public String getPassword() { 40 return password; 41 } 42 43 public void setPassword(String password) { 44 this.password = password; 45 } 46 47 public Date getBirthday() { 48 return birthday; 49 } 50 51 public void setBirthday(Date birthday) { 52 this.birthday = birthday; 53 } 54 55 @Override 56 public String toString() { 57 return "User{" + 58 "id=" + id + 59 ", username='" + username + '\'' + 60 ", password='" + password + '\'' + 61 ", birthday=" + birthday + 62 '}'; 63 } 64 }
1 xml version="1.0" encoding="UTF-8" ?> 2 DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 7 8 <properties resource="jdbc.properties">properties> 9 10 11 <typeAliases> 12 <typeAlias type="com.itheima.domain.User" alias="user">typeAlias> 13 typeAliases> 14 15 16 <typeHandlers> 17 <typeHandler handler="com.itheima.handler.DateTypeHandler" >typeHandler> 18 typeHandlers> 19 20 21 <plugins> 22 <plugin interceptor="com.github.pagehelper.PageHelper"> 23 <property name="dialect" value="mysql">property> 24 plugin> 25 plugins> 26 27 <environments default="development"> 28 <environment id="development"> 29 <transactionManager type="JDBC">transactionManager> 30 <dataSource type="POOLED"> 31 <property name="driver" value="${jdbc.driver}">property> 32 <property name="url" value="${jdbc.url}">property> 33 <property name="username" value="${jdbc.username}">property> 34 <property name="password" value="${jdbc.password}">property> 35 dataSource> 36 environment> 37 environments> 38 39 <mappers> 40 <mapper resource="com/itheima/mapper/UserMapper.xml">mapper> 41 mappers> 42 configuration>
1 xml version="1.0" encoding="UTF-8" ?> 2 DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <mapper namespace="com.itheima.mapper.UserMapper"> 6 7 <insert id="save" parameterType="user"> 8 insert into user(username, password, birthday) values(#{username},#{password},#{birthday}) 9 insert> 10 11 <sql id="selectUser"> 12 select * from user 13 sql> 14 15 <select id="findAll" resultType="user"> 16 <include refid="selectUser">include> 17 select> 18 19 <select id="findById" parameterType="int" resultType="user"> 20 <include refid="selectUser">include> where id=#{id} 21 select> 22 23 24 <select id="findByIds" parameterType="int[]" resultType="user"> 25 <include refid="selectUser">include> 26 <where> 27 <foreach collection="array" item="id" open="id in(" separator="," close=")" > 28 #{id} 29 foreach> 30 where> 31 select> 32 33 <select id="findByCondition" parameterType="user" resultType="user"> 34 <include refid="selectUser">include> 35 <where> 36 <if test="id!=0"> 37 and id=#{id} 38 if> 39 <if test="username!=null"> 40 and username=#{username} 41 if> 42 <if test="password!=null"> 43 and password=#{password} 44 if> 45 where> 46 select> 47 mapper>
1 xml version="1.0" encoding="UTF-8"?> 2 3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0modelVersion> 6 7 <groupId>com.itheimagroupId> 8 <artifactId>mybatis-day02artifactId> 9 <version>1.0-SNAPSHOTversion> 10 <packaging>warpackaging> 11 12 <name>mybatis-day02 Maven Webappname> 13 14 <url>http://www.example.comurl> 15 16 <properties> 17 <project.build.sourceEncoding>UTF-8project.build.sourceEncoding> 18 <maven.compiler.source>1.8maven.compiler.source> 19 <maven.compiler.target>1.8maven.compiler.target> 20 properties> 21 22 <dependencies> 23 24 <dependency> 25 <groupId>junitgroupId> 26 <artifactId>junitartifactId> 27 <version>4.11version> 28 <scope>testscope> 29 dependency> 30 31 <dependency> 32 <groupId>org.mybatisgroupId> 33 <artifactId>mybatisartifactId> 34 <version>3.4.6version> 35 dependency> 36 37 <dependency> 38 <groupId>mysqlgroupId> 39 <artifactId>mysql-connector-javaartifactId> 40 <version>5.1.37version> 41 dependency> 42 43 <dependency> 44 <groupId>log4jgroupId> 45 <artifactId>log4jartifactId> 46 <version>1.2.17version> 47 dependency> 48 49 <dependency> 50 <groupId>com.github.pagehelpergroupId> 51 <artifactId>pagehelperartifactId> 52 <version>3.7.5version> 53 dependency> 54 <dependency> 55 <groupId>com.github.jsqlparsergroupId> 56 <artifactId>jsqlparserartifactId> 57 <version>0.9.1version> 58 dependency> 59 dependencies> 60 61 <build> 62 <finalName>mybatis-day02finalName> 63 <pluginManagement> 64 <plugins> 65 <plugin> 66 <artifactId>maven-clean-pluginartifactId> 67 <version>3.1.0version> 68 plugin> 69 70 <plugin> 71 <artifactId>maven-resources-pluginartifactId> 72 <version>3.0.2version> 73 plugin> 74 <plugin> 75 <artifactId>maven-compiler-pluginartifactId> 76 <version>3.8.0version> 77 plugin> 78 <plugin> 79 <artifactId>maven-surefire-pluginartifactId> 80 <version>2.22.1version> 81 plugin> 82 <plugin> 83 <artifactId>maven-war-pluginartifactId> 84 <version>3.2.2version> 85 plugin> 86 <plugin> 87 <artifactId>maven-install-pluginartifactId> 88 <version>2.5.2version> 89 plugin> 90 <plugin> 91 <artifactId>maven-deploy-pluginartifactId> 92 <version>2.8.2version> 93 plugin> 94 plugins> 95 pluginManagement> 96 build> 97 project>
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3307/test jdbc.username=root jdbc.password=root
### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.err log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### direct messages to file mylog.log ### log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=c:/mylog.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### set log levels - for more verbose logging change 'info' to 'debug' ### log4j.rootLogger=debug, stdout