黑马MyBatisday2 MyBatis Dao层实现 接口代理实现&传统实现 动态SQL和SQL抽取 自定义类型处理 分页插件PageHelper...

  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         List byCondition = 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         List userList = 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 }
UserMapperTest
 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     List findByCondition(User condition);
10 
11     List findAll();
12 
13 //    List findByIds(int[] ids);
14     List findByIds(Integer[] ids);
15 
16     User findById(int id);
17 
18     //如果不写返回值,则调用方法不会有影响行数返回值
19     int save(User user);
20 }
UserMapper
 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 }
DateTypeHandler
 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 }
User
 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>
SqlMapConfig.xml
 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>
UserMapper.xml
 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>
pom.xml
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3307/test
jdbc.username=root
jdbc.password=root
jdbc.properties
### 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
log4j.properties

 

转载于:https://www.cnblogs.com/mozq/p/10946489.html

你可能感兴趣的:(黑马MyBatisday2 MyBatis Dao层实现 接口代理实现&传统实现 动态SQL和SQL抽取 自定义类型处理 分页插件PageHelper...)