• mybatis整合spring原始dao开发


    一、开发框架结构

    1、引入jar包

    2、配置文件

    3、po

    4、dao

      

    二、编写dao接口和接口实现类

    public interface UserDao {
        public User findUserById(int id);

      dao实现类

    public class UserDaoImpl implements UserDao {
        
        @Override
        public User findUserById(int id) {
        //1、获取SqlSession
        SqlSession sqlSession= null;
        //2、通过SqlSession的方法执行statement
        User user=sqlSession.selectOne("",id);
        //3、返回执行结果
        return user;
        }

      1、获取statement的id

        1.1、新建一个Mapper.xml(User.xml)用于配置操作数据库的statement

    <?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">
    <mapper namespace="test">
        <select id="findUserById" parameterType="Integer" resultType="com.xxx.mybatis.spring.po.User">
            SELECT * FROM
            T_USER WHERE ID=#{ID}
        </select>
    </mapper>

        1.2、配置核心配置文件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>
        <mappers>
            <mapper resource="User.xml"/>
        </mappers>
    </configuration>

      2、获取SqlSession对象

        2.1、让UserDaoImpl实现类继承SqlSessionDaoSupport,SqlSessionDaoSupport可以获得SqlSession对象

    public abstract class SqlSessionDaoSupport extends DaoSupport {
    
      private SqlSessionTemplate sqlSessionTemplate;
    
    
      public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
        if (this.sqlSessionTemplate == null || sqlSessionFactory != this.sqlSessionTemplate.getSqlSessionFactory()) {
          this.sqlSessionTemplate = createSqlSessionTemplate(sqlSessionFactory);
        }
      }

        2.2、SqlSession对象需要sqlSessionFactory对象创建的,sqlSessionFactory对象要通过spring创建,spring创建sqlSessionFactory,就需要数据源和mybatis核心配置文件

        <!-- 1、引入数据库连接属性文件 -->
        <context:property-placeholder location="classpath:jdbc.properties" />
    
        <!-- 2、配置C3P0连接池 -->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driverClass}" />
            <property name="jdbcUrl" value="${jdbc.url}" />
            <property name="user" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
        </bean>
    
        <!-- 3、spring创建sqlSessionFactory对象 -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <!-- 加载mybatis的配置文件 -->
            <property name="configLocation" value="mybatis/SqlMapConfig.xml" />
            <!-- 数据源 -->
            <property name="dataSource" ref="dataSource" />
        </bean>
        
        <!-- 4、spring创建userDao对象,并将sqlSessionFactory对象注入到userDao对象的sqlSessionFactory属性中-->
        <bean id="userDao" class="com.xxx.mybatis.spring.dao.impl.UserDaoImpl">
            <property name="sqlSessionFactory" ref="sqlSessionFactory" />
        </bean>

    以上就解决了SqlSession和statement的获取,dao的实现类的代码如下:

    public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
        
        @Override
        public User findUserById(int id) {
        //1、获取SqlSession
        SqlSession sqlSession= this.getSqlSession();
        //2、通过SqlSession的方法执行statement
        User user=sqlSession.selectOne("test.findUserById",id);
        //3、返回执行结果
        return user;
        }

    三、测试

        ApplicationContext applicationContext;
    
        @BeforeEach
        void setUp() throws Exception {
        applicationContext=new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
        }
    
        @Test
        void testFindUserById() {
        UserDao userDao=(UserDao) applicationContext.getBean("userDao");//userDao是spring管理Bean的id
        User user=userDao.findUserById(1);
        System.out.println(user);
        }
  • 相关阅读:
    2月4日进度
    每日总结3-6
    每日总结3-5
    每日总结3-4
    每日总结3-2
    本周计划
    本周计划
    假期每日总结2-13
    假期每日总结2-12
    假期每日总结2-11
  • 原文地址:https://www.cnblogs.com/WarBlog/p/14955345.html
Copyright © 2020-2023  润新知