传统xml方式实现Mybatis的增删改查
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0"
3 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.0</modelVersion>
6
7 <groupId>com.haifei</groupId>
8 <artifactId>SSM16_mybatis_anno</artifactId>
9 <version>1.0-SNAPSHOT</version>
10 <packaging>war</packaging>
11
12
13 <dependencies>
14 <dependency>
15 <groupId>mysql</groupId>
16 <artifactId>mysql-connector-java</artifactId>
17 <version>5.1.32</version>
18 </dependency>
19 <dependency>
20 <groupId>org.mybatis</groupId>
21 <artifactId>mybatis</artifactId>
22 <version>3.4.6</version>
23 </dependency>
24 <dependency>
25 <groupId>junit</groupId>
26 <artifactId>junit</artifactId>
27 <version>4.12</version>
28 </dependency>
29 <dependency>
30 <groupId>log4j</groupId>
31 <artifactId>log4j</artifactId>
32 <version>1.2.17</version>
33 </dependency>
34 </dependencies>
35
36
37 <build>
38 <plugins>
39 <plugin>
40 <groupId>org.apache.maven.plugins</groupId>
41 <artifactId>maven-compiler-plugin</artifactId>
42 <version>3.1</version>
43 <configuration>
44 <target>1.8</target>
45 <source>1.8</source>
46 <encoding>UTF-8</encoding>
47 </configuration>
48 </plugin>
49 </plugins>
50 </build>
51
52
53 </project>
1 ### direct log messages to stdout ###
2 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
3 log4j.appender.stdout.Target=System.out
4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
5 log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
6
7 ### direct messages to file mylog.log ###
8 log4j.appender.file=org.apache.log4j.FileAppender
9 log4j.appender.file.File=c:/mylog.log
10 log4j.appender.file.layout=org.apache.log4j.PatternLayout
11 log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
12
13 ### set log levels - for more verbose logging change 'info' to 'debug' ###
14
15 #log4j.rootLogger=info, stdout
16 log4j.rootLogger=debug, stdout
1 jdbc.driver=com.mysql.jdbc.Driver
2 jdbc.url=jdbc:mysql://localhost:3306/hm_ssm
3 jdbc.username=root
4 jdbc.password=root
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
3
4 <!--The content of element type "configuration" must match
5 "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,
6 objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?)".-->
7
8 <configuration>
9
10 <!--加载外部properties文件-->
11 <properties resource="jdbc.properties"></properties>
12
13 <!--自定义别名-->
14 <typeAliases>
15 <typeAlias type="com.haifei.domain.User" alias="user" />
16 </typeAliases>
17
18 <!--注册类型处理器-->
19 <typeHandlers>
20 <typeHandler handler="com.haifei.handler.DateTypeHandler" />
21 </typeHandlers>
22
23 <environments default="development">
24 <!--配置数据源环境-->
25 <environment id="development">
26 <transactionManager type="JDBC"></transactionManager>
27 <dataSource type="POOLED">
28 <property name="driver" value="${jdbc.driver}"/>
29 <property name="url" value="${jdbc.url}"/>
30 <property name="username" value="${jdbc.username}"/>
31 <property name="password" value="${jdbc.password}"/>
32 </dataSource>
33 </environment>
34 </environments>
35
36 <!--xml实现mybatis-CRUD:加载映射文件-->
37 <mappers>
38 <mapper resource="com/haifei/mapper/UserMapper.xml"/>
39 </mappers>
40
41
42
43 </configuration>
1 package com.haifei.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<Date> {
13
14 /**
15 * 将java数据类型 转换为 数据库所需的数据类型
16 * @param preparedStatement
17 * @param i
18 * @param date
19 * @param jdbcType
20 * @throws SQLException
21 */
22 @Override
23 public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException {
24 long time = date.getTime();
25 preparedStatement.setLong(i, time);
26 }
27
28 /**
29 * 将数据库中的数据类型 转换为 所需的java数据类型
30 * @param resultSet 查询出的结果集
31 * @param s 要转换的字段名称
32 * @return
33 * @throws SQLException
34 */
35 @Override
36 public Date getNullableResult(ResultSet resultSet, String s) throws SQLException {
37 //获取结果集中需要的数据类型(long)转换为Date类型,并返回
38 long aLong = resultSet.getLong(s);
39 Date date = new Date(aLong);
40 return date;
41 }
42
43 /**
44 * 将数据库中的数据类型 转换为 所需的java数据类型
45 * @param resultSet
46 * @param i
47 * @return
48 * @throws SQLException
49 */
50 @Override
51 public Date getNullableResult(ResultSet resultSet, int i) throws SQLException {
52 long aLong = resultSet.getLong(i);
53 Date date = new Date(aLong);
54 return date;
55 }
56
57 /**
58 * 将数据库中的数据类型 转换为 所需的java数据类型
59 * @param callableStatement
60 * @param i
61 * @return
62 * @throws SQLException
63 */
64 @Override
65 public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
66 long aLong = callableStatement.getLong(i);
67 Date date = new Date(aLong);
68 return date;
69 }
70 }
1 package com.haifei.domain;
2
3 import java.util.Date;
4 import java.util.List;
5
6 public class User {
7
8 private int id;
9 private String username;
10 private String password;
11 private Date birthday;
12
13
14 public Date getBirthday() {
15 return birthday;
16 }
17
18 public void setBirthday(Date birthday) {
19 this.birthday = birthday;
20 }
21
22 public int getId() {
23 return id;
24 }
25
26 public void setId(int id) {
27 this.id = id;
28 }
29
30 public String getUsername() {
31 return username;
32 }
33
34 public void setUsername(String username) {
35 this.username = username;
36 }
37
38 public String getPassword() {
39 return password;
40 }
41
42 public void setPassword(String password) {
43 this.password = password;
44 }
45
46 @Override
47 public String toString() {
48 return "User{" +
49 "id=" + id +
50 ", username='" + username + '\'' +
51 ", password='" + password + '\'' +
52 ", birthday=" + birthday +
53 '}';
54 }
55 }
1 package com.haifei.mapper;
2
3 import com.haifei.domain.User;
4 import org.apache.ibatis.annotations.Delete;
5 import org.apache.ibatis.annotations.Insert;
6 import org.apache.ibatis.annotations.Select;
7 import org.apache.ibatis.annotations.Update;
8
9 import java.util.List;
10
11
12 public interface UserMapper {
13
14
15 public void save(User user);
16
17
18 public void delete(int id);
19
20
21 public void update(User user);
22
23
24 public List<User> findAll();
25
26
27 public User findById(int id);
28
29 }
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
4 <mapper namespace="com.haifei.mapper.UserMapper">
5
6 <insert id="save" parameterType="user">
7 insert into user values(#{id},#{username},#{password},#{birthday})
8 </insert>
9
10 <delete id="delete" parameterType="int">
11 delete from user where id=#{id}
12 </delete>
13
14 <update id="update" parameterType="user">
15 update user set username=#{username},password=#{password},birthday=#{birthday} where id=#{id}
16 </update>
17
18 <select id="findAll" resultType="user">
19 select * from user
20 </select>
21
22 <select id="findById" parameterType="int" resultType="user">
23 select * from user where id=#{id}
24 </select>
25
26 </mapper>
1 package com.haifei.test;
2
3 import com.haifei.domain.User;
4 import com.haifei.mapper.UserMapper;
5 import org.apache.ibatis.io.Resources;
6 import org.apache.ibatis.session.SqlSession;
7 import org.apache.ibatis.session.SqlSessionFactory;
8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
9 import org.junit.Before;
10 import org.junit.Test;
11
12 import java.io.IOException;
13 import java.io.InputStream;
14 import java.util.Date;
15 import java.util.List;
16
17 public class MybatisTest {
18
19 private UserMapper mapper;
20
21 @Before
22 public void before() throws IOException {
23 InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
24 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
25 SqlSession sqlSession = sqlSessionFactory.openSession(true); //true-->事务自动提交
26 mapper = sqlSession.getMapper(UserMapper.class);
27 }
28
29 @Test
30 public void testSave(){
31 User user = new User();
32 user.setUsername("222");
33 user.setPassword("222");
34 user.setBirthday(new Date());
35 mapper.save(user);
36 //Updates: 1
37 }
38
39 @Test
40 public void testUpdate(){
41 User user = new User();
42 user.setId(12);
43 user.setUsername("333");
44 user.setPassword("333");
45 user.setBirthday(new Date());
46 mapper.update(user);
47 //Updates: 1
48 }
49
50 @Test
51 public void testDelete(){
52 mapper.delete(12);
53 //Updates: 1
54 }
55
56 @Test
57 public void testFindAll(){
58 List<User> userList = mapper.findAll();
59 for (User user : userList) {
60 System.out.println(user);
61 }
62 /*
63 User{id=1, username='zhangsan', password='123', birthday=Sat Jul 24 20:00:29 CST 2021}
64 User{id=2, username='lisi', password='345', birthday=Sat Jul 24 20:00:29 CST 2021}
65 User{id=3, username='tom', password='abc', birthday=Sat Jul 24 20:00:29 CST 2021}
66 User{id=4, username='lucy', password='def', birthday=Sat Jul 24 20:00:29 CST 2021}
67 User{id=5, username='sam', password='sam', birthday=Sat Jul 24 20:00:29 CST 2021}
68 User{id=9, username='11', password='11', birthday=Sat Jul 24 20:00:29 CST 2021}
69 */
70 }
71
72 @Test
73 public void testFindById(){
74 User user = mapper.findById(5);
75 System.out.println(user); //User{id=5, username='sam', password='sam', birthday=Sat Jul 24 20:00:29 CST 2021}
76 }
77
78 }