mybatis+spring 方式一

来源:互联网 发布:淘宝一件代发挣钱吗 编辑:程序博客网 时间:2024/06/05 15:22

具体步骤:
1.代码结构
这里写图片描述

具体代码片段:

service层:
UserService.java

package com.yyc.ssm.service;import java.util.List;import com.yyc.ssm.entity.User;public interface UserService {    List<User> getUserList(int offset, int limit);    public List<User> getAllUser();    void insertName(User user);}

UserServiceImpl.java

package com.yyc.ssm.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.yyc.ssm.dao.UserDao;import com.yyc.ssm.entity.User;import com.yyc.ssm.service.UserService;@Servicepublic class UserServiceImpl implements UserService{    @Autowired    private UserDao userDao;    @Override    public List<User> getUserList(int offset, int limit) {        return userDao.selectByPrimaryKey(1000L);    }    public List<User> getAllUser(){        return userDao.getAllUser();    }    @Override    public void insertName(User user) {        userDao.insertName(user);    }}

Dao层:
UserDao .java

package com.yyc.ssm.dao;import java.util.List;import org.apache.ibatis.annotations.Param;import org.mybatis.spring.annotation.MapperScan;import com.yyc.ssm.entity.User;public interface UserDao {    /**     * 根据偏移量查询用户列表     */    List<User> selectByPrimaryKey(@Param("userId") long id);    List<User> getAllUser();    void insertName(User user);}

UserDaoImpl.java

package com.yyc.ssm.dao.impl;import java.util.List;import javax.annotation.Resource;import org.mybatis.spring.SqlSessionTemplate;import org.springframework.stereotype.Repository;import com.yyc.ssm.dao.UserDao;import com.yyc.ssm.entity.User;@Repositorypublic class UserDaoImpl implements UserDao {    // mapper.xml的命名(namespace)    String ns = "com.yyc.ssm.dao.UserDao";    @Resource    private SqlSessionTemplate sqlSessionTemplate;    @Override    public List<User> selectByPrimaryKey(long id) {        return sqlSessionTemplate.selectList(ns+".selectByPrimaryKey",id);    }    @Override    public List<User> getAllUser() {        return sqlSessionTemplate.selectList(ns+".queryAll");    }    @Override    public void insertName(User user) {        sqlSessionTemplate.insert(ns+".insert", user);    }}

spring-mybatis.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"    xmlns:context="http://www.springframework.org/schema/context"    xmlns:mvc="http://www.springframework.org/schema/mvc"    xsi:schemaLocation="http://www.springframework.org/schema/beans                          http://www.springframework.org/schema/beans/spring-beans-3.1.xsd                          http://www.springframework.org/schema/context                          http://www.springframework.org/schema/context/spring-context-3.1.xsd                          http://www.springframework.org/schema/mvc                          http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">    <!-- 引入配置文件 -->    <!--1、配置数据库相关参数-->    <context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true"/>    <!--2.数据源druid -->    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"             init-method="init" destroy-method="close">        <property name="driverClassName" value="${jdbc.driverClassName}" />        <property name="url" value="${jdbc.url}" />        <property name="username" value="${jdbc.username}" />        <property name="password" value="${jdbc.password}" />         <!-- 配置初始化大小、最小、最大 -->          <property name="initialSize" value="${druid.pool.size.init}" />          <property name="minIdle" value="${druid.pool.size.min}" />           <property name="maxActive" value="${druid.pool.size.max}" />          <!-- 配置监控统计拦截的filters,wall用于防止sql注入,stat用于统计分析 -->        <property name="filters" value="wall,stat" />     </bean>    <!-- mybatis的配置 -->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="dataSource" ref="dataSource" />        <!-- 自动扫描mapping.xml文件,**表示迭代查找,也可在sqlMapConfig.xml中单独指定xml文件-->        <property name="mapperLocations" value="classpath:mapper/*.xml" />    </bean>    <!-- mybatis spring sqlSessionTemplate,使用时直接让spring注入即可 -->    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">        <constructor-arg index="0" ref="sqlSessionFactory"></constructor-arg>    </bean>    <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">        <property name="dataSource" ref="dataSource" />    </bean></beans>

这种配置主要利用了org.mybatis.spring.SqlSessionTemplate。
在网上找的对sqlSessionTemplate的解释。

SqlSessionFactoryBuilder:build方法创建SqlSessionFactory实例。
SqlSessionFactory:创建SqlSession实例的工厂。
SqlSession:用于执行持久化操作的对象,类似于jdbc中的Connection。
SqlSessionTemplate:MyBatis提供的持久层访问模板化的工具,线程安全,可通过构造参数或依赖注入SqlSessionFactory实例。