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版权协议,转载请附上原文出处链接和本声明。