使用IDEA的gradle整合spring+ mybatis 采用javaconfig配置
1.新建一个工程
2.工程目录
3.添加gradle.propertes文件
activeMQVersion=5.7.0
aspectJVersion=1.7.2
commonsLangVersion = 3.1
ehcacheVersion=2.7.4
ehcacheJCacheVersion=1.4.0-beta1
h2Version=1.4.182
hamcrestVersion = 1.3
hibernateVersion=4.1.6.Final
hibernateEntityManagerVersion=4.0.1.Final
hibernateValidatorVersion = 5.0.1.Final
jacksonVersion=2.4.3
javaxMailVersion=1.4.7
jspApiVersion = 2.1
jspElVersion = 2.2.4
jstlVersion = 1.2
junitVersion=4.12
log4jVersion=1.2.14
mockitoVersion=1.9.5
servletApiVersion = 3.1.0
slf4jVersion = 1.7.5
springAMQPVersion=1.0.0.RELEASE
springDataJpaVersion=1.3.2.RELEASE
springSecurityVersion = 3.2.0.RELEASE
springVersion=4.0.7.RELEASE
springWebflowVersion=2.4.1.RELEASE
systemRulesVersion=1.5.0
thymeleafVersion = 2.1.3.RELEASE
tilesVersion = 3.0.1
mysql_Java = 5.1.38
commons_dbcp = 1.4
mybatis_spring =1.2.5
mybatisVersion = 3.3.1
4.添加依赖,修改build.gradle文件
group 'com.huang'
version '1.0-SNAPSHOT' apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse'
apply plugin: 'idea' sourceCompatibility = 1.5 repositories {
maven { url 'http://maven.springframework.org/release' }
maven { url 'http://maven.springframework.org/milestone' }
maven { url 'http://maven.springframework.org/snapshot' }
maven { url 'http://download.java.net/maven/2' }
mavenCentral()
} dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
testCompile"org.springframework:spring-test:${springVersion}"
testCompile "com.github.stefanbirkner:system-rules:${systemRulesVersion}"
compile "org.springframework:spring-core:$springVersion"
compile "org.springframework:spring-context:$springVersion"
compile "org.springframework:spring-jdbc:$springVersion"
compile "org.mybatis:mybatis:$mybatisVersion"
compile "org.mybatis:mybatis-spring:$mybatis_spring"
compile "commons-dbcp:commons-dbcp:$commons_dbcp"
compile "mysql:mysql-connector-java:$mysql_Java"
compile "log4j:log4j:$log4jVersion"
compile "com.h2database:h2:$h2Version"
compile "javax.inject:javax.inject:1"
compile "net.sf.ehcache:ehcache:$ehcacheVersion"
compile "net.sf.ehcache:ehcache-jcache:$ehcacheJCacheVersion" }
5.执行sql脚本,创建数据库表
SET FOREIGN_KEY_CHECKS=0; -- ----------------------------
-- Table structure for tbl_dep
-- ----------------------------
DROP TABLE IF EXISTS `tbl_dep`;
CREATE TABLE `tbl_dep` (
`depId` varchar(20) NOT NULL,
`name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`depId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ----------------------------
-- Records of tbl_dep
-- ----------------------------
INSERT INTO `tbl_dep` VALUES ('', '总公司');
INSERT INTO `tbl_dep` VALUES ('', '一分公司');
INSERT INTO `tbl_dep` VALUES ('', '开发部');
INSERT INTO `tbl_dep` VALUES ('', '测试部');
INSERT INTO `tbl_dep` VALUES ('', '二分公司');
INSERT INTO `tbl_dep` VALUES ('', '开发部');
INSERT INTO `tbl_dep` VALUES ('', '测试部'); -- ----------------------------
-- Table structure for tbl_user
-- ----------------------------
DROP TABLE IF EXISTS `tbl_user`;
CREATE TABLE `tbl_user` (
`userId` varchar(20) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`depId` varchar(20) NOT NULL,
`sex` varchar(10) DEFAULT NULL,
PRIMARY KEY (`userId`),
KEY `TBL_USER_FK` (`depId`),
CONSTRAINT `TBL_USER_FK` FOREIGN KEY (`depId`) REFERENCES `tbl_dep` (`depId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ----------------------------
-- Records of tbl_user
-- ----------------------------
INSERT INTO `tbl_user` VALUES ('user0001', '张三1', '', '男');
INSERT INTO `tbl_user` VALUES ('user0002', '张三2', '', '男');
INSERT INTO `tbl_user` VALUES ('user0003', '张三3', '', '男');
INSERT INTO `tbl_user` VALUES ('user0004', '张三4', '', '男');
INSERT INTO `tbl_user` VALUES ('user0005', '张三5', '', '男');
INSERT INTO `tbl_user` VALUES ('user0006', '张三6', '', '男');
SET FOREIGN_KEY_CHECKS=1;
6.创建实体类User,对应tbl_user表
package com.huang.domain; /**
* Created by huangyichun on 2016/12/9.
*/
public class User { private String userId;
private String name;
private String depId;
private String sex; public String getUserId() {
return userId;
} public void setUserId(String userId) {
this.userId = userId;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getDepId() {
return depId;
} public void setDepId(String depId) {
this.depId = depId;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} @Override
public String toString() {
return "User{" +
"userId='" + userId + '\'' +
", name='" + name + '\'' +
", depId='" + depId + '\'' +
", sex='" + sex + '\'' +
'}';
}
}
7. 创建接口UserMapper,其中部分采用注解形式
package com.huang.mapper; import com.huang.domain.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import java.util.List; public interface UserMapper { @Select("SELECT * FROM tbl_user")
List<User> getUserList(); @Select("SELECT * FROM tbl_user WHERE userId = #{userId}")
User getUserById(@Param("userId") String userId); @Update("UPDATE tbl_user SET sex = #{sex} WHERE userId = #{userId}")
void updateUserEmailById(@Param("userId") String userId, @Param("sex") String sex); @Delete("DELETE FROM tbl_user WHERE userId = #{userId}")
void deleteUserById(@Param("userId") String userId); void insertUser(User user);
}
8.创建UserMapper.xml文件,放在
如果放在java的com.huang.mapper文件夹下,将不会自动加载,这个Idea有关系
9.创建配置类
package com.huang.config;
import org.apache.commons.dbcp.BasicDataSource;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager; @Configuration
@MapperScan(basePackages = "com.huang.mapper")
public class DataConfig { @Bean
public BasicDataSource dataSource(){
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8");//防止乱码
dataSource.setUsername("root");
dataSource.setPassword("huangyichun");
dataSource.setInitialSize(5);
dataSource.setMaxActive(10);
return dataSource;
} @Bean
public DataSourceTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
} @Bean
public SqlSessionFactoryBean sqlSessionFactory() throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setTypeAliasesPackage("com.huang.domain");
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
return sessionFactory;
}
}
10.创建测试类
import com.huang.config.DataConfig;
import com.huang.domain.User; import com.huang.mapper.UserMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.List; @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = DataConfig.class)
public class TestMybatis { @Autowired
private UserMapper userMapper;
@Test
public void getUserById(){
User user = userMapper.getUserById("user0005");
System.out.println(user.toString());
} @Test
public void getUserList(){
List<User> list = userMapper.getUserList();
for (User user : list){
System.out.println(user.toString());
}
} @Test
public void updateUserEmailById(){
userMapper.updateUserEmailById("user0006","女");
} @Test
public void deleteUserById(){
userMapper.deleteUserById("user0006");
} @Test
public void insertUser(){
User user = new User();
user.setUserId("user0008");
user.setName("张三7");
user.setDepId("010102");
user.setSex("男");
userMapper.insertUser(user);
} }
使用IDEA的gradle整合spring+ mybatis 采用javaconfig配置的更多相关文章
- 使用IDEA的gradle整合spring+springmvc+mybatis 采用javaconfig配置
1.在上篇博客里讲述了spring+mybatis的整合,这边在上篇的基础上进行开发. 上篇博客链接http://www.cnblogs.com/huangyichun/p/6149946.html ...
- maven工程下整合spring+mybatis报Mapped Statements collection does not contain value for spring-mybatis-user-get错误
在整合spring+mybatis报了下面的错误: Mapped Statements collection does not contain value for spring-mybatis-use ...
- spring,mybatis事务管理配置与@Transactional注解使用[转]
spring,mybatis事务管理配置与@Transactional注解使用[转] spring,mybatis事务管理配置与@Transactional注解使用 概述事务管理对于企业应用来说是至关 ...
- spring,mybatis事务管理配置与@Transactional注解使用
spring,mybatis事务管理配置与@Transactional注解使用[转] spring,mybatis事务管理配置与@Transactional注解使用 概述事务管理对于企业应用来说是 ...
- Spring+MyBatis双数据库配置
Spring+MyBatis双数据库配置 近期项目中遇到要调用其它数据库的情况.本来仅仅使用一个MySQL数据库.但随着项目内容越来越多,逻辑越来越复杂. 原来一个数据库已经不够用了,须要分库分表.所 ...
- Spring+MyBatis实践—工程配置
初次实践:Spring+MyBatis技术搭建框架,采用Bootstrap前端开源框架. 简介: MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所 ...
- Spring + Mybatis应该如何配置
### 1. MYBATIS简介 MYBATIS是持久层框架,大大的简化了持久层开发. 当使用MYBATIS框架时,开发人员不必再编写繁琐的JDBC代码,只需要定义好每个功能对应的抽象方法与需要执行的 ...
- 关于整合spring+mybatis 第三种方式-使用注解
使用注解 1.与前两种方法一致.不过稍许不同的是beans.xml中配置的差异. <!-- 配置sqlSessionFactory --> <bean id="sqlSes ...
- 关于整合spring+mybatis 第二种方式
和第一种方式一样的步骤,不过bean.xml中有些许差异 <!-- 配置sqlSessionFactory --> <bean id="sqlSessionFactory& ...
随机推荐
- Java Swing jpanel paint方法执行两次的问题
Java Swing jpanel paint方法执行两次的问题: 在其他环境下执行了两次,自己测试怎么都是执行了一次,记录一下这个问题:需要后继工作: 可能是进行各种参数设置的时候导致了paint方 ...
- 《Linux多线程服务端编程》笔记——线程同步精要
并发编程基本模型 message passing和shared memory. 线程同步的四项原则 尽量最低限度地共享对象,减少需要同步的场合.如果确实需要,优先考虑共享 immutable 对象. ...
- MVC伪一个12306图片验证码
本文的来由主要是满足自己的好奇心,而不是证明什么东西,如果涉及到什么官方性的事情,麻烦通知我谢谢:本篇将要和大家分享的是一个看起来通12306图片验证码相似的效果,这篇应该是今年农历最后一篇分享文章了 ...
- css3模拟jq点击事件
还是这个梗,收好冷.今天是一个css3模拟jq点击事件,因为我发现,css3中没有类似于,js的点击事件,那么,可不可以仿照 jq的效果,类似的做一个呢?主要用到,input里面的radio 单选按钮 ...
- [html] 学习笔记-Canvas图形绘制处理
使用Canvas API 可以将一个图形重叠绘制在另外一个图形上,也可以给图形添加阴影效果. 1.Canvas 图形组合 通过 globalCompositeOperation = 属性 来指定重叠效 ...
- TSQL编程
1.索引 唯一键/主键添加索引,设计界面,在任何一列前右键--索引/键--点击进入添加某一列为索引 2.视图 视图就是我们查询出来的虚拟表创建视图:create view 视图名 as SQL查询 ...
- 每日一练之自适应中值滤波器(基于OpenCV实现)
本文主要介绍了自适应的中值滤波器,并基于OpenCV实现了该滤波器,并且将自适应的中值滤波器和常规的中值滤波器对不同概率的椒盐噪声的过滤效果进行了对比.最后,对中值滤波器的优缺点了进行了总结. 空间滤 ...
- Yii框架中的form表单
<?php//引入命名空间use yii\helpers\Html;?><?php //表单:Html::beginForm(提交地址,提交方法,属性数组);?><?=H ...
- 深入浅出妙用 Javascript 中 apply、call、bind
这篇文章实在是很难下笔,因为网上相关文章不胜枚举. 巧合的是前些天看到阮老师的一篇文章的一句话: "对我来说,博客首先是一种知识管理工具,其次才是传播工具.我的技术文章,主要用来整理我还不懂 ...
- Angular企业级开发(7)-MVC之控制器
1.MVC中的控制器 AngularJS的控制器主要为了把模型和视图连接在一起.大多数业务逻辑操作都会放在视图对应的控制器中.当然如果我们能够把业务逻辑放到后端的REST服务中,就可以开发轻量级Ang ...