SSM学习笔记 ——Spring纯注解整合Mybatis教程
前言
最近在学习SSM,刚好学习到Spring整合Mybatis了,随后网上大部分教程讲的都是通过 XML注解方式进行整合,但是让我一个 注解用习惯的开发者不是很愉快,随后特地写下该文章,防止各位花费大量时间踩坑
准备工作
Maven导入相关坐标
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<!-- c3p0版本0.9.5.2 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.18</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.10</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.10</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.10</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.12.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.18</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.18</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.3.18</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.7</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.4</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
环境准备
以下环境都可以自己自定义,教程举例User
- UserMapper
- UserService
- UserServiceImpl
- Test(单元测试Junit)
接下来是代码示例
代码示例
UserMapper
public interface UserMapper {
//可以自定义相关简单查询
@Select("select * from r_user u,r_order o where o.id = u.uid")
@Results(id = "empMap",value = {
@Result(column = "uid",property = "uid"),
@Result(column = "name",property = "name"),
@Result(column = "password",property = "password"),
@Result(column = "total",property = "order.total"),
@Result(property = "order",
javaType = Order.class,column = "id",
one = @One(select = "cn.marinda.mapper.OrderMapper.findById"))})
List<User> findAllInfo();
UserService
public interface UserService {
List<User> findAllInfo();
}
UserServiceImpl
@Service("userService")
public class UserServiceImpl implements UserService {
@Resource
private UserMapper userMapper;
/**
* 添加用户
*/
public List<User> findAllInfo() {
return userMapper.findAllInfo();
}
}
MybatisTest
public class MybatisTest {
public UserMapper userMapper;
@Test
public void tests(){
System.out.println("userMapper:" + userMapper);
List<User> userList = userMapper.findAllInfo();
for(User user : userList){
System.out.println("user: " + user);
}
}
}
结果
user: User{uid='69a1a643-f670-4ef1-b455-a751513b3bb7', name='张三', password='1', sex=男, age=16, portait='http://www.baidu.com', order=Order{id='69a1a643-f670-4ef1-b455-a751513b3bb7', oid='testxx', total=100.0, uid=null}, orderList=null, roleList=null, uidList=null}
user: User{uid='69yt', name='test', password='1', sex=男, age=16, portait='http://www.baidu.com', order=Order{id='69yt', oid='testsss', total=100.0, uid=null}, orderList=null, roleList=null, uidList=null}
错误注意事项
java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyResultSet.isClosed()
错误解析:
由于我的数据源c3p0 版本较低,所以需要更改以下c3p0版本到:0.9.5.2即可!
结束语
今天我们讲解了一下SSM学习笔记 ——Spring纯注解整合Mybatis教程
- 如果对你有帮助的话可以给我点赞收藏,十分感谢
- 致力做优、好、细、精学习笔记分享给大家
- 可以转载 需标明 出处 本文链接。
- 笔者一个开源项目:餐饮管理系统 希望大家可以点一下star哦
感谢你的观看。
版权声明:本文为qq_33638188原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。