spring+mybatis+通用mapper(tk.mybatis)使用介绍
2017-12-15 23:31
441 查看
spring+mybatis+通用mapper使用介绍
版本:spring-3.2.9.RELEASE、mybatis-3.4.4、tk.mybatis-3.4.3使用tk.mybatis通用mapper,很方便实现表的基本CRUD操作,不需要为实体类编写mapper.xml文件。具体参考https://mapperhelper.github.io/docs/
1,maven配置
<!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>3.2.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>3.2.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.2.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.2.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>3.2.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.2.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>3.2.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>3.2.9.RELEASE</version> </dependency> <!-- mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.4</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <!-- tk.mybatis --> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>3.4.3</version> </dependency> <!-- dbcp --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.3</version> </dependency> <!-- mysql-jdbc --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <!-- apache commons --> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency>
2,spring配置,spring-app.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:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <tx:annotation-driven transaction-manager="txManager" /> <!-- base-package 改成你的需要扫描的包路径 --> <context:component-scan base-package="com.mybatis.mymapper" /> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>${jdbc.driverClassName}</value> </property> <property name="url"> <value>${jdbc.url}</value> </property> <property name="username"> <value>${jdbc.username}</value> </property> <property name="password"> <value>${jdbc.password}</value> </property> <property name="initialSize" value="1" /> <property name="maxActive" value="20" /> <property name="maxIdle" value="5" /> <property name="testOnBorrow" value="true" /> <property name="testWhileIdle" value="true" /> <property name="validationQuery" value="select 1 from dual"/> </bean> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations"> <array> <value>classpath:mybatis/mapper/*.xml</value> </array> </property> <property name="typeAliasesPackage" value="com.isea533.mybatis.model" /> </bean> <bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 此处value改成你的继承tk.mapper的接口类包路径 --> <property name="basePackage" value="com.*.mymapper" /> <property name="markerInterface" value="tk.mybatis.mapper.common.Mapper" /> </bean> </beans>
3,编写实体类
package com.mybatis.mymapper; import java.util.Date; import javax.persistence.Column; import javax.persistence.Id; import javax.persistence.Table; import org.apache.commons.lang.builder.ToStringBuilder; @Table(name="T_CDR") public class CdrDO { @Id @Column(name="CDR_ID") private Long cdrId; private String caller; private String callee; private Date beginTime; private Date endTime; @Column(name = "CALL_DURATION") private Integer duration; private Double fee; public Long getCdrId() { return cdrId; } public void setCdrId(Long cdrId) { this.cdrId = cdrId; } public String getCaller() { return caller; } public void setCaller(String caller) { this.caller = caller; } public String getCallee() { return callee; } public void setCallee(String callee) { this.callee = callee; } public Date getBeginTime() { return beginTime; } public void setBeginTime(Date beginTime) { this.beginTime = beginTime; } public Date getEndTime() { return endTime; } public void setEndTime(Date endTime) { this.endTime = endTime; } public Integer getDuration() { return duration; } public void setDuration(Integer duration) { this.duration = duration; } public Double getFee() { return fee; } public void setFee(Double fee) { this.fee = fee; } @Override public String toString() { return ToStringBuilder.reflectionToString(this); } }
4,编写mapper接口
package com.mybatis.mymapper; import org.springframework.stereotype.Repository; import tk.mybatis.mapper.common.Mapper; @Repository("cdrMapper") public interface CdrMapper extends Mapper<CdrDO>{ }
5,编写service类
package com.mybatis.mymapper; import org.springframework.context.support.AbstractXmlApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import tk.mybatis.mapper.entity.Example; @Service("myMapper") public class MyMapper { @Transactional public void crud_transaction(AbstractXmlApplicationContext context) { CdrMapper cdrMapper = (CdrMapper) context.getBean("cdrMapper"); CdrDO cdr = new CdrDO(); cdr.setCdrId(1L); cdr.setCdrId(4L); System.out.println("inserted: " + cdrMapper.insert(cdr)); cdr.setCallee("callee"); System.out.println("updated: " + cdrMapper.updateByPrimaryKey(cdr)); cdr.setCallee(null); cdr.setCaller("caller"); System.out.println("updated: " + cdrMapper.updateByPrimaryKeySelective(cdr)); CdrDO cdr_1 = cdrMapper.selectByPrimaryKey(4L); System.out.println(cdr_1); Example example = new Example(CdrDO.class); Example.Criteria criteria = example.createCriteria(); criteria.andCondition("CDR_ID=", 4L); cdrMapper.deleteByExample(example); } public void crud_single(AbstractXmlApplicationContext context) { CdrMapper cdrMapper = (CdrMapper) context.getBean("cdrMapper"); CdrDO cdr = new CdrDO(); cdr.setCdrId(1L); cdr.setCdrId(4L); System.out.println("inserted: " + cdrMapper.insert(cdr)); cdr.setCallee("callee"); System.out.println("updated: " + cdrMapper.updateByPrimaryKey(cdr)); cdr.setCallee(null); cdr.setCaller("caller"); System.out.println("updated: " + cdrMapper.updateByPrimaryKeySelective(cdr)); CdrDO cdr_1 = cdrMapper.selectByPrimaryKey(4L); System.out.println(cdr_1); Example example = new Example(CdrDO.class); Example.Criteria criteria = example.createCriteria(); criteria.andCondition("CDR_ID=", 4L); cdrMapper.deleteByExample(example); } public static void main(String[] args) { // TODO Auto-generated method stub AbstractXmlApplicationContext context = new ClassPathXmlApplicationContext( new String[] { "spring-app.xml" }); MyMapper test = (MyMapper) context.getBean("myMapper"); test.crud_single(context); test.crud_transaction(context); context.close(); } }
6,运行MyMapper,观察输出日志
1,运行crud_single()时,可以观察到cdrMapper的方法执行时,都会创建新的SqlSession;2,运行crud_transaction()时,观察到只创建了一次SqlSession
相关文章推荐
- 详解Mybatis通用Mapper介绍与使用
- Mybatis使用介绍
- mybatis(一) mybatis介绍 单独使用jdbc编程中问题总结 mybatis框架原理
- tk.mybatis使用resultmap进行collection映射问题
- Mybatis的分页插件pagehelper的使用介绍
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
- MyBatis使用大全(1)------MyBatis介绍和作用
- tkprof的基本使用详细介绍
- mybatis----简单介绍和使用
- mybatis+tk mapper使用oracle sequence自增时其中一点小结
- mybatis generator怎么使用?maven使用方法介绍
- 使用MyBatis+Mysql实现分页的插件PageInfo使用介绍
- Mybatis框架介绍及使用
- MyBatis 之ResultMap 使用介绍
- 简单介绍Mybatis如何使用
- MyBatis 之ResultMap 使用介绍
- mybatis使用经验介绍
- Mybatis介绍与使用(二)
- MyBatis 之ResultMap 使用介绍