首页 > Java > java教程 > 正文

MyBatis入门(六)---mybatis与spring的整合

黄舟
发布: 2016-12-21 14:35:51
原创
1418人浏览过

一、整合需要

1.1、方法

上一章中的数据

需要sPRing通过单例方式管理SqlsessionFactory

spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession

(spring和mybatis整合自动完成)

持久层的mapper都需要由spring进行管理

二、创建项目整合环境

2.1、创建项目

46.png

2.2、数据

db.properties

#数据库配置信息
#驱动
driverClass=com.MySQL.jdbc.Driver
#连接url
jdbcUrl=jdbc:mysql://localhost:3306/mybatis?character=utf8#用户名
user=root
#密码
passWord=root
#连接池中保留的最小连接数
minPoolSize=10#连接池中保留的最大连接数。Default: 15 maxPoolSize=20#最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 maxIdletime=1800#当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3acquireIncrement=3#连接池中初始化连接数 应在minPoolSize与maxPoolSize之间取值。默认为3
initialPoolSize=15

 

千帆大模型平台
千帆大模型平台

面向企业开发者的一站式大模型开发及服务运行平台

千帆大模型平台 35
查看详情 千帆大模型平台

2.3、confinguration

<?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><!--资源文件  --><properties resource="db.properties"/><settings><!--开启延时加载  --><setting name="lazyLoadingEnabled" value="true"/><!--关闭立即加载  --><setting name="aggressiveLazyLoading" value="false"/><!--开启二级缓存  --><setting name="cacheEnabled" value="true" /></settings><!-- 别名  --><typeAliases><!-- <typeAlias type="com.pb.mybatis.po.User" alias="User"/> --><package name="com.pb.ssm.po"/></typeAliases><!--配置  --><environments default="development"><environment id="development">
   <!--事务  -->
   <transactionManager type="JDBC"/>
   <!--数据源  -->
   <dataSource type="POOLED">
   <property name="driver" value="${driverClass}"/>
   <property name="url" value="${jdbcUrl}"/>
   <property name="username" value="${user}"/>
   <property name="password" value="${password}"/>
   </dataSource></environment></environments><mappers>
   <package name="com.pb.ssm.mapper"/></mappers></configuration>

2.4 POJO类与接口

 

package com.pb.ssm.po;import java.util.Date;/**
*

* @ClassName: Author

* @Description: TODO(作者)

* @author 刘楠

* @date 2015-10-31 下午12:39:33

* */public class Author {    //作者id
   private Integer authorId;    //作者姓名
   private String authorUserName;    //作者密码
   private String authorPassword;    //作者邮箱
   private String authorEmail;    //作者介绍
   private String authroBio;    //注册时间
   private Date registerTime;    
   
   
   public Integer getAuthorId() {        return authorId;
   }    public void setAuthorId(Integer authorId) {        this.authorId = authorId;
   }    public String getAuthorUserName() {        return authorUserName;
   }    public void setAuthorUserName(String authorUserName) {        this.authorUserName = authorUserName;
   }    public String getAuthorPassword() {        return authorPassword;
   }    public void setAuthorPassword(String authorPassword) {        this.authorPassword = authorPassword;
   }    public String getAuthorEmail() {        return authorEmail;
   }    public void setAuthorEmail(String authorEmail) {        this.authorEmail = authorEmail;
   }    public String getAuthroBio() {        return authroBio;
   }    public void setAuthroBio(String authroBio) {        this.authroBio = authroBio;
   }    public Date getRegisterTime() {        return registerTime;
   }    public void setRegisterTime(Date registerTime) {        this.registerTime = registerTime;
   }
   @Override    public String toString() {        return "Author [authorId=" + authorId + ", authorUserName="
               + authorUserName + ", authorPassword=" + authorPassword                + ", authorEmail=" + authorEmail + ", authroBio=" + authroBio                + ", registerTime=" + registerTime + "]";
   }
   
   
}

 

接口

 

package com.pb.ssm.mapper;import com.pb.ssm.po.Author;public interface AuthorMapper {    /**
    *
   
   * @Title: findAuthorById
   
   * @Description: TODO(根据id查找)
   
   * @param @param id
   * @param @return    设定文件
   
   * @return Author    返回类型
   
   * @throws
    */
   public Author findAuthorById(int id);    
   /**
    *
   
   * @Title: addAuthor
   
   * @Description: TODO(添加)
   
   * @param @param author
   * @param @return    设定文件
   
   * @return int    返回类型
   
   * @throws
    */
   public int addAuthor(Author author);    /**
    *
   
   * @Title: updateAuthor
   
   * @Description: TODO(更新)
   
   * @param @param author
   * @param @return    设定文件
   
   * @return int    返回类型
   
   * @throws
    */
   public int updateAuthor(Author author);    
   /**
    * 删除
   
   * @Title: delteAuthor
   
   * @Description: TODO(根据ID删除)
   
   * @param @param id
   * @param @return    设定文件
   
   * @return int    返回类型
   
   * @throws
    */
   public int delteAuthor(int id);
}

 

mapper.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"><mapper namespace="com.pb.ssm.mapper.AuthorMapper"><!--开启本mapper下的二级缓冲
type指定为ehcachecache类开
在ehcache和mybatis的整合包中 --><cache /><!--映射作者Author  --><resultMap type="Author" id="authorResultMap"><id property="authorId" column="author_id"/><result property="authorUserName" column="author_username"/><result property="authorPassword" column="author_password"/><result property="authorEmail" column="author_email"/><result property="authroBio" column="author_bio"/><result property="registerTime" column="register_time"/></resultMap><!-- 根据ID查找 --><select id="findAuthorById" parameterType="int" resultMap="authorResultMap">select * from author
where author_id=#{id}</select><!--添加  --><insert id="addAuthor" parameterType="Author" useGeneratedKeys="true" keyProperty="authorId">INSERT INTO author(author_username,author_password,author_email,author_bio)
VALUES(#{authorUserName},#{authorPassword},#{authorEmail},#{authroBio})</insert><update id="updateAuthor" parameterType="Author">update author<set><if test="authorUserName!=null and authorUserName!=''">author_username=#{authorUserName},</if><if test="authorPassword!=null and authorPassword!=''">author_password=#{authorPassword},</if><if test="authorEmail!=null and authorEmail!=''">author_email=#{authorEmail},</if><if test="authroBio!=null and authroBio!=''">author_bio=#{authroBio},</if><if test="registerTime!=null">register_time=#{registerTime}</if></set>where author_id=#{authorId}</update><!--删除  --><delete id="delteAuthor" parameterType="int">delete from author where author_id=#{authorId}</delete></mapper>

 

三、使用Mybatis配置文件.xml整合

3.1、写applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd"><!--加载配置文件  --><context:property-placeholder location="classpath:db.properties"/><!--配置数据源 使用第三方数据源 也可以使用dbcp 或者 spring自带的:org.springframework.jdbc.datasource.DriverManagerDataSource --><bean id="dataSource" class="com.mchange.v2.c3p0.DataSources" destroy-method="close"><!--加载数据库驱动  --><property name="driverClass" value="${driverClass}"/><!--连接数据库的URL  --><property name="jdbcUrl" value="#{jdbcUrl}"/><!--连接数据库的用户名和密码  --><property name="user" value="${user}"/><property name="password" value="${password}"/><!-- 连接池中保留的最小连接数 --><property name="minPoolSize" value="${minPoolSize}"/><!-- 连接池中保留的最大连接数 --><property name="maxPoolSize" value="${maxPoolSize}"/><!-- 最大空闲时间 --><property name="maxIdletime" value="${maxIdletime}"/><!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3  --><property name="acquireIncrement" value="${acquireIncrement}"/><!--连接池中初始化连接数  应在minPoolSize与maxPoolSize之间取值。默认为3--><property name="initialPoolSize" value="${initialPoolSize}"/></bean><!--配置SqlSessionFacotry  在mybatis-spring包中--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!--注入数据源  ,将上面的数据源注入--><property name="dataSource" ref="dataSource" />
<!-- 将mybatis的配置文件注入-->
<property name="configLocation" value="configuration.xml"/></bean>

 

3.2、测试

 

package com.pb.ssm.mapper;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Before;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.pb.ssm.po.Author;public class AuthorMapperTest {    private ApplicationContext applicationContext;

   @Before    public void setUp() throws Exception {
       applicationContext=new ClassPathXmlApplicationContext("ApplicationContext.xml");
   }

   @Test    public void testFindAuthorById() {
       

       AuthorMapper authorMapper = (AuthorMapper) applicationContext.getBean("authorMapper");
       Author author = authorMapper.findAuthorById(2);
       System.out.println(author);
   
   }

   @Test    public void testAddAuthor() {        // 获取会话工厂
       AuthorMapper authorMapper = (AuthorMapper) applicationContext.getBean("authorMapper");
       
       Author author=new Author();
       author.setAuthorUserName("程序猿");
       author.setAuthorPassword("QWERdlfdad");
       author.setAuthorEmail("QWER@QQ.com");        
       
       int  num = authorMapper.addAuthor(author);
   
       System.out.println("num="+num);
       System.out.println("添加后的ID:"+author.getAuthorId());
   }

   @Test    public void testUpdateAuthor() {        // 获取会话工厂
       AuthorMapper authorMapper = (AuthorMapper) applicationContext.getBean("authorMapper");
       Author author = authorMapper.findAuthorById(13);
       author.setAuthroBio("天天写代码");
       author.setAuthorUserName("码农");        int num=authorMapper.updateAuthor(author);
   
       System.out.println("num="+num);
       System.out.println(author);
   }

   @Test    public void testDeleteAuthor() {        // 获取会话工厂
       AuthorMapper authorMapper = (AuthorMapper) applicationContext.getBean("authorMapper");        int num= authorMapper.delteAuthor(13);
       
   }

}

 

 

 

四、不使用mybatis配置文件

4.1、写ApplicationContext.xml

 

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd"><!--开启自动扫描  --><!-- <context:component-scan base-package="com.pb.ssm"/> --><!--加载配置文件  --><context:property-placeholder location="db.properties"/><!--配置数据源
使用第三方数据源
也可以使用dbcp
或者 spring自带的:org.springframework.jdbc.datasource.DriverManagerDataSource --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"><!--加载数据库驱动  --><property name="driverClass" value="${driverClass}"/><!--连接数据库的URL  --><property name="jdbcUrl" value="${jdbcUrl}"/><!--连接数据库的用户名和密码  --><property name="user" value="${user}"/><property name="password" value="${password}"/></bean><!--配置SqlSessionFacotry  在mybatis-spring包中--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!--注入数据源  ,将上面的数据源注入--><property name="dataSource" ref="dataSource"/><!-- 扫描所有Mapper接口的实现类xml 自动扫描mapping.xml文件 --><property name="mapperLocations" value="classpath:com/pb/ssm/mapping/*.xml"/></bean><!--为所有的Mapper接口注入sqlSessionFactory  --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!--基本路径 指定扫描的包名  --><property name="basePackage" value="com.pb.ssm.mapper"/><!--  注入sqlSessionFactory --><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/></bean><!--事务管理  -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!-- 注入数据源  --><property name="dataSource" ref="dataSource"/></bean></beans>

 

更改Mapper.xml,因为不能使用别名,所以type要写POJO类的全路径

<?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="com.pb.ssm.mapper.AuthorMapper"><!--映射作者Author  --><resultMap type="com.pb.ssm.po.Author" id="authorResultMap"><id property="authorId" column="author_id"/><result property="authorUserName" column="author_username"/><result property="authorPassword" column="author_password"/><result property="authorEmail" column="author_email"/><result property="authroBio" column="author_bio"/><result property="registerTime" column="register_time"/></resultMap><!-- 根据ID查找 --><select id="findAuthorById" parameterType="int" resultMap="authorResultMap">select * from author
where author_id=#{id}</select><!--添加  --><insert id="addAuthor" parameterType="com.pb.ssm.po.Author" useGeneratedKeys="true" keyProperty="authorId">INSERT INTO author(author_username,author_password,author_email,author_bio)
VALUES(#{authorUserName},#{authorPassword},#{authorEmail},#{authroBio})</insert><update id="updateAuthor" parameterType="com.pb.ssm.po.Author">update author<set><if test="authorUserName!=null and authorUserName!=''">author_username=#{authorUserName},</if><if test="authorPassword!=null and authorPassword!=''">author_password=#{authorPassword},</if><if test="authorEmail!=null and authorEmail!=''">author_email=#{authorEmail},</if><if test="authroBio!=null and authroBio!=''">author_bio=#{authroBio},</if><if test="registerTime!=null">register_time=#{registerTime}</if></set>where author_id=#{authorId}</update><!--删除  --><delete id="delteAuthor" parameterType="int">delete from author where author_id=#{authorId}</delete></mapper>

 

测试类同上

 以上就是MyBatis入门(六)---mybatis与spring的整合的内容,更多相关内容请关注PHP中文网(www.php.cn)! 

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号