Spring整合MyBatis和MyBatis逆向工程

 

Spring整合MyBatis和MyBatis逆向工程

 

一、整合思路和准备

1.  集成思路

       需要spring来管理数据源信息。

        需要spring通过单例方式管理SqlSessionFactory。

        使用SqlSessionFactory创建SqlSession。(spring和mybatis整合自动完成)

        持久层的mapper都需要由spring进行管理,spring和mybatis整合生成mapper代理对象

 2.  集成步骤

        ①jar包集成;

        ②配置文件集成(数据源);

        ③SqlSessionFactory集成;

        ④Mapper接口集成;

3.  搭建工程

新建java项目

            

 

导入jar包

 

数据库

原型文件:db.properties和log4j.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root

jdbc.password=root

# Global logging configuration
#\u5728\u5f00\u53d1\u73af\u5883\u4e0b\u65e5\u5fd7\u7ea7\u522b\u8981\u8bbe\u7f6e\u6210DEBUG\uff0c\u751f\u4ea7\u73af\u5883\u8bbe\u7f6e\u6210info\u6216error
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

二、原始Dao整合

1.  PO类

        

public class User implements Serializable {

   //属性名和数据库表的字段对应
   private int id;
   private String username;// 用户姓名
   private String sex;// 性别
   private Date birthday;// 生日
   private String address;// 地址

   //用户创建的订单列表
   private List<Orders> ordersList;
public class Orders {
   private Integer id;

   private Integer userId;

   private String number;

   private Date createtime;

   private String note;

   //用户信息
   private User user;

2.  DAO类

public interface UserDao {
   //根据id查询用户信息
   public User findUserById(int id) throws Exception;
}
/**
 * UserDaoImpl继承SqlSessionDaoSupport
 * 自动方法结束就关闭资源了,不需要再close关闭资源了
 * @author DreamWF
 *
 */
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {

   @Override
   public User findUserById(int id) throws Exception {
      //继承SqlSessionDaoSupport,通过this.getSqlSession()得到sqlSessoin
      SqlSession sqlSession = this.getSqlSession();

      User user = sqlSession.selectOne("test.findUserById", id);

      return user;

   }
}

3.  Mapper映射文件:user.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离 
注意:使用mapper代理方法开发,namespace有特殊重要的作用
-->
<mapper namespace="test">

    <!-- 在 映射文件中配置很多sql语句 -->
    <!-- 需求:通过id查询用户表的记录 -->
    <!-- 通过 select执行数据库查询
    id:标识 映射文件中的 sql
    将sql语句封装到mappedStatement对象中,所以将id称为statement的id
    parameterType:指定输入 参数的类型,这里指定int型 
    #{}表示一个占位符号
    #{id}:其中的id表示接收输入 的参数,参数名称就是id,如果输入 参数是简单类型,#{}中的参数名可以任意,可以value或其它名称
    
    resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。
     -->
    <select id="findUserById" parameterType="int" resultType="com.cjw.ssm.po.User">
        SELECT * FROM USER WHERE id=#{value}
    </select>

</mapper>

4.  Mybatis的SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 别名定义 -->
    <typeAliases>
        <!-- 批量别名定义 
        指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以)
        -->
        <package name="com.cjw.ssm.po"/>
    </typeAliases>

    <!-- 加载 映射文件 -->
    <mappers>
        <mapper resource="sqlMap/User.xml"/>
        <!-- 批量加载mapper
        指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载
        遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中
        上边规范的前提是:使用的是mapper代理方法
        
        和spring整合后,使用mapper扫描器,这里不需要配置了
         -->
        <!-- <package name="com.cjw.ssm.mapper"/> -->
    </mappers>
</configuration>

 

5.  Spring的applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop" 
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocatio
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值