博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring和mybatis的整合
阅读量:6160 次
发布时间:2019-06-21

本文共 16294 字,大约阅读时间需要 54 分钟。

一、搭建项目开发环境

1. 新建一个maven项目SpringMybatis,项目结构如下:

                                                                               

说明:

src/main/java 存放java代码和映射文件:

         com.study.springmybatis.dao 存放mapper接口

         com.study.springmybatis.mapper 存放mapper映射文件

         com.study.springmybatis.model 存放pojo类

         com.study.springmybatis.service 存放service接口和对应的实现类

src/test/java存放测试代码

src/main/resources 存放数据库配置文件和xml配置文件

2. 在pom.xml文件引入spring和mybatis相关的依赖,这里用的是阿里的maven远程仓库http://maven.aliyun.com/nexus/content/groups/public/

1 
3
4.0.0
4 5
com.study.springmybatis
6
SpringMybatis
7
0.0.1-SNAPSHOT
8
jar
9 10
SpringMybatis
11
http://maven.apache.org
12 13
14
UTF-8
15
16 17
18
19
20
org.springframework
21
spring-core
22
4.3.12.RELEASE
23
24 25
26
org.springframework
27
spring-context
28
4.3.12.RELEASE
29
30 31
32
org.springframework
33
spring-tx
34
4.3.12.RELEASE
35
36 37
38
org.springframework
39
spring-jdbc
40
4.3.12.RELEASE
41
42 43
44
org.springframework
45
spring-test
46
4.3.12.RELEASE
47
48 49
50
org.springframework
51
spring-aop
52
4.3.12.RELEASE
53
54 55
56
org.springframework
57
spring-beans
58
4.3.12.RELEASE
59
60 61
62
org.apache.geronimo.bundles
63
aspectjweaver
64
1.6.8_2
65
66
67 68
69
70
org.mybatis
71
mybatis
72
3.2.8
73
74
75 76
77
78
org.mybatis
79
mybatis-spring
80
1.2.0
81
82
83 84
85
86
org.wisdom-framework
87
mysql-connector-java
88
5.1.34_1
89
90 91
92
commons-dbcp
93
commons-dbcp
94
1.4
95
96 97
98
commons-pool
99
commons-pool
100
1.6
101
102 103
104
c3p0
105
c3p0
106
0.9.1.2
107
108
109 110
118
119
commons-logging
120
commons-logging
121
1.1.3
122
123 124
125
junit
126
junit
127
4.12
128
test
129
130
131 132
133

二、创建表SQL和使用mybatis逆向工程生成代码

1.建表

1 CREATE TABLE `t_user` (2   `id` int(11) NOT NULL AUTO_INCREMENT,3   `username` varchar(30) NOT NULL COMMENT '用户名称',4   `birthday` date DEFAULT NULL COMMENT '生日',5   `sex` char(2) DEFAULT NULL COMMENT '性别',6   `address` varchar(256) DEFAULT NULL COMMENT '地址',7   PRIMARY KEY (`id`)8 ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='用户信息表';

2. 使用mybatis逆向工程生成代码

   mybatis逆向工程能根据数据库的表结构生成对应的mapper映射文件,接口,实体类,具体操作方法可以看我的前一篇文章:,然后修改生成文件的名称为符合java命名规范的名称

3. 生成逆向工程后的代码目录结构如下,这里使用的是spring的注解管理bean

   生成的mapper接口UserDao.java代码

1 package com.study.springmybatis.dao; 2  3 import org.springframework.stereotype.Repository; 4  5 import com.study.springmybatis.model.UserModel; 6  7 /** 8  * 用户接口 9  * 10  * @author lgs11  *12  */13 @Repository("userDao")14 public interface UserDao {15     int deleteByPrimaryKey(Integer id);16 17     int insert(UserModel record);18 19     int insertSelective(UserModel record);20 21     UserModel selectByPrimaryKey(Integer id);22 23     int updateByPrimaryKeySelective(UserModel record);24 25     int updateByPrimaryKey(UserModel record);26 }

生成的mapper映射文件mapper-user.xml,因为之前对生成的实体和接口做了名称修改,所以这里也要对mapper-user.xml里面的内容做对应的修改,修改后的内容如下

1 
2 3
4 5
6
7
8
9
10
11
12 13
14 id, username, birthday, sex, address 15
16 17
23 24
25 delete from t_user 26 where id = #{id,jdbcType=INTEGER} 27
28 29
30 insert into t_user (id, username, birthday, 31 sex, address) 32 values (#{id,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{birthday,jdbcType=DATE}, 33 #{sex,jdbcType=CHAR}, #{address,jdbcType=VARCHAR}) 34
35 36
37 insert into t_user 38
39
40 id, 41
42
43 username, 44
45
46 birthday, 47
48
49 sex, 50
51
52 address, 53
54
55
56
57 #{id,jdbcType=INTEGER}, 58
59
60 #{username,jdbcType=VARCHAR}, 61
62
63 #{birthday,jdbcType=DATE}, 64
65
66 #{sex,jdbcType=CHAR}, 67
68
69 #{address,jdbcType=VARCHAR}, 70
71
72
73 74
75 update t_user 76
77
78 username = #{username,jdbcType=VARCHAR}, 79
80
81 birthday = #{birthday,jdbcType=DATE}, 82
83
84 sex = #{sex,jdbcType=CHAR}, 85
86
87 address = #{address,jdbcType=VARCHAR}, 88
89
90 where id = #{id,jdbcType=INTEGER} 91
92 93
94 update t_user 95 set username = #{username,jdbcType=VARCHAR}, 96 birthday = #{birthday,jdbcType=DATE}, 97 sex = #{sex,jdbcType=CHAR}, 98 address = #{address,jdbcType=VARCHAR} 99 where id = #{id,jdbcType=INTEGER}100
101

生成的pojo即实体类UserModel.java

1 package com.study.springmybatis.model; 2  3 import java.util.Date; 4  5 /** 6  * 用户信息表 7  *  8  * @author lgs 9  * 10  * @date 2017-10-2111  */12 public class UserModel {13     private Integer id;14 15     /**16      * 用户名称17      */18     private String username;19 20     /**21      * 生日22      */23     private Date birthday;24 25     /**26      * 性别27      */28     private String sex;29 30     /**31      * 地址32      */33     private String address;34 35     public Integer getId() {36         return id;37     }38 39     public void setId(Integer id) {40         this.id = id;41     }42 43     public String getUsername() {44         return username;45     }46 47     public void setUsername(String username) {48         this.username = username == null ? null : username.trim();49     }50 51     public Date getBirthday() {52         return birthday;53     }54 55     public void setBirthday(Date birthday) {56         this.birthday = birthday;57     }58 59     public String getSex() {60         return sex;61     }62 63     public void setSex(String sex) {64         this.sex = sex == null ? null : sex.trim();65     }66 67     public String getAddress() {68         return address;69     }70 71     public void setAddress(String address) {72         this.address = address == null ? null : address.trim();73     }74 }

业务的接口UserServiceI.java和实现类UserService.java

1 package com.study.springmybatis.service; 2  3 import com.study.springmybatis.model.UserModel; 4  5 /** 6  * 业务接口 7  * @author lgs 8  * 9  */10 public interface UserServiceI {11 12     /**13      * 根据用户id获取用户14      * @param userId15      * @return16      */17     UserModel getUserById(Integer userId);18 }
1 package com.study.springmybatis.service; 2  3 import javax.annotation.Resource; 4  5 import org.springframework.stereotype.Service; 6  7 import com.study.springmybatis.dao.UserDao; 8 import com.study.springmybatis.model.UserModel; 9 10 /**11  * 业务实现类12  * @author lgs13  *14  */15 @Service("userService")16 public class UserService implements UserServiceI {17 18     /**19      * 使用Resource注解注入userDao实例,20      * 当需要使用userDao时,Spring就会自动注入UserDao21      */22     @Resource23     private UserDao userDao;24 25     public UserModel getUserById(Integer userId) {26         return userDao.selectByPrimaryKey(userId);27     }28 }

三、在src/main/resources目录下编写配置文件

1. 数据库配置dbconfig.properties

1 driver=com.mysql.jdbc.Driver2 jdbc_url=jdbc:mysql://192.168.152.1:3306/study?characterEncoding=utf-83 jdbc_username=root4 jdbc_password=1234565 validationQuery=SELECT 1

2. Spring框架的核心配置文件spring.xml

1 
2
12
13 14
15
16
17
18

3. Spring框架与Mybatis框架整合的配置文件

1 
2
10
11 12
13
15
16
${driver}
17
18
19
${jdbc_url}
20
21
22
${jdbc_username}
23
24
25
${jdbc_password}
26
27
28
29
30
31
32 33
34 35
36
37
38
39
40
44
45
46
47
48
49
50
51
52 53
54
55
56
57
58 59
60
61 62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 77
78
79
80
81
82 83
84
85
86
87
88
89
90
91 92

四、在src/test/java编写测试类SpringMyBatisTest,本来测试类是放在src/test/java目录下面的。但是不知道为啥找不到junit的注解@Test,这里就偷了一下懒移到src/main/java目录的com.study.springmybatis.test包下面了

1 package com.study.springmybatis.test; 2  3  4 import javax.annotation.Resource; 5  6 import org.junit.Test; 7 import org.junit.runner.RunWith; 8 import org.springframework.test.context.ContextConfiguration; 9 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;10 11 import com.study.springmybatis.model.UserModel;12 import com.study.springmybatis.service.UserServiceI;13 14 15 @RunWith(SpringJUnit4ClassRunner.class)16 //配置了@ContextConfiguration注解并使用该注解的locations属性指明spring和配置文件之后,17 @ContextConfiguration(locations = {"classpath:spring.xml", "classpath:spring-mybatis.xml" })18 public class SpringMyBatisTest {19 20     //注入userService21     @Resource22     private UserServiceI userService;23     24     25     @Test26     public void testGetUserById(){27         int userId = 1;28         UserModel user = userService.getUserById(userId);29         System.out.println("查询到的用户名为:"+user.getUsername());30     }31 }

运行测试类的结果为:

1 十月 22, 2017 3:08:00 下午 org.springframework.test.context.support.DefaultTestContextBootstrapper getDefaultTestExecutionListenerClassNames 2 信息: Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener] 3 十月 22, 2017 3:08:00 下午 org.springframework.test.context.support.DefaultTestContextBootstrapper instantiateListeners 4 信息: Could not instantiate TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener]. Specify custom listener classes or make the default listener classes (and their required dependencies) available. Offending class: [javax/servlet/ServletContext] 5 十月 22, 2017 3:08:00 下午 org.springframework.test.context.support.DefaultTestContextBootstrapper getTestExecutionListeners 6 信息: Using TestExecutionListeners: [org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@3b6eb2ec, org.springframework.test.context.support.DependencyInjectionTestExecutionListener@1e643faf, org.springframework.test.context.support.DirtiesContextTestExecutionListener@6e8dacdf, org.springframework.test.context.transaction.TransactionalTestExecutionListener@7a79be86, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener@34ce8af7] 7 十月 22, 2017 3:08:00 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 8 信息: Loading XML bean definitions from class path resource [spring.xml] 9 十月 22, 2017 3:08:00 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions10 信息: Loading XML bean definitions from class path resource [spring-mybatis.xml]11 十月 22, 2017 3:08:00 下午 org.springframework.context.support.GenericApplicationContext prepareRefresh12 信息: Refreshing org.springframework.context.support.GenericApplicationContext@5a61f5df: startup date [Sun Oct 22 15:08:00 CST 2017]; root of context hierarchy13 查询到的用户名为:lgs

五、需要完整工程代码的同学去我的githup上下载https://github.com/leeSmall/SpringMybatis

转载于:https://www.cnblogs.com/leeSmall/p/7709983.html

你可能感兴趣的文章
【Xcode】编辑与调试
查看>>
用tar和split将文件分包压缩
查看>>
[BTS] Could not find stored procedure 'mp_sap_check_tid'
查看>>
PLSQL DBMS_DDL.ALTER_COMPILE
查看>>
Activity生命周期
查看>>
高仿UC浏览器弹出菜单效果
查看>>
Ubuntu忘记密码,进不了系统的解决方法
查看>>
[原创]白盒测试技术思维导图
查看>>
<<Information Store and Management>> 读书笔记 之八
查看>>
Windows 8 开发之设置合约
查看>>
闲说HeartBeat心跳包和TCP协议的KeepAlive机制
查看>>
MoSQL
查看>>
Hibernate多对一外键单向关联(Annotation配置)
查看>>
《CLR via C#》读书笔记 之 方法
查看>>
设计模式:组合模式(Composite Pattern)
查看>>
ContentValues 和HashTable区别
查看>>
LogicalDOC 6.6.2 发布,文档管理系统
查看>>
给PowerShell脚本传递参数
查看>>
实战2——Hadoop的日志分析
查看>>
利用FIFO进行文件拷贝一例
查看>>