sprig-boot是一个微服务架构,加快了spring工程快速开发,以及简便了配置。接下来开始spring-boot与mybatis的整合。
1、创建一个maven工程命名为spring-boot-entity,pom.xml文件配置如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.spring.boot.entity</groupId><artifactId>spring-boot-entity</artifactId><packaging>jar</packaging><version>0.0.1-SNAPSHOT</version><distributionManagement><repository><id>releases</id><name>Nexus Release Repository</name><url>http://localhost:8081/nexus/content/repositories/releases/</url></repository><snapshotRepository><id>snapshots</id><name>Nexus Snapshot Repository</name><url>http://localhost:8081/nexus/content/repositories/snapshots/</url></snapshotRepository></distributionManagement><!-- 其中distributionManagement节点配置的仓库为当前工程打包时发布的仓库 --></project>然后创建一个包,命名为com.spring.boot.entity,在该包下创建一个User.java文件,内容如下:/*** Copyright (c) Windliven 2016 All Rights Reserved** @author liyj* @date 2017年7月11日 下午2:34:32* @since V1.0.0*/package com.spring.boot.entity;/*** TODO** @author liyj* @date 2017年7月11日 下午2:34:32**/public class UserEntity {/*** id*/private String id;/*** name*/private String name;/*** pass*/private String pass;/*** email*/private String email;/*** iphone*/private String iphone;public UserEntity() {}public UserEntity(String id) {this.id = id;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPass() {return pass;}public void setPass(String pass) {this.pass = pass;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getIphone() {return iphone;}public void setIphone(String iphone) {this.iphone = iphone;}}
到此,spring-boot-entity工程创建完成。
2、创建一个maven工程,命名为spring-boot-interface,pom.xml文件配置如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.spring.boot.inter</groupId><artifactId>spring-boot-interface</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><!-- 引入spring-boo-entity工程打成的jar包 --><dependency><groupId>com.spring.boot.entity</groupId><artifactId>spring-boot-entity</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies><distributionManagement><repository><id>releases</id><name>Nexus Release Repository</name><url>http://localhost:8081/nexus/content/repositories/releases/</url></repository><snapshotRepository><id>snapshots</id><name>Nexus Snapshot Repository</name><url>http://localhost:8081/nexus/content/repositories/snapshots/</url></snapshotRepository></distributionManagement><!-- 其中distributionManagement节点配置的仓库为当前工程打包时发布的仓库 --></project>然后创建一个包,命名为com.spring.boot.inter.service,在该包下创建UserService.java接口类。内容如下:/*** Copyright (c) Windliven 2016 All Rights Reserved** @author liyj* @date 2017年7月11日 下午2:31:20* @since V1.0.0*/package com.spring.boot.inter.service;import java.util.List;import com.spring.boot.entity.UserEntity;/*** TODO** @author liyj* @date 2017年7月11日 下午2:31:20**/public interface UserService {/** insert*/void insert(UserEntity entity);/** deleteEntity*/void deleteEntity(UserEntity entity);/** deleteById*/void deleteById(String id);/** updateEntity*/void updateEntity(UserEntity entity);/** updateById*/void updateById(String id);/** getOne*/UserEntity getOne(String id);/** getList*/List<UserEntity> getList();}
到此,spring-boot-interface工程完成。
3、创建一个maven工程,命名为spring-boot-main,pom.xml文件内容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.spring.boot.service</groupId><artifactId>spring-boot-service</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><!-- entity、接口的jar包 --><dependency><groupId>com.spring.boot.entity</groupId><artifactId>spring-boot-entity</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.spring.boot.inter</groupId><artifactId>spring-boot-interface</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!-- spring-boot --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot</artifactId><version>1.4.1.RELEASE</version></dependency><!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.4.1.RELEASE</version> </dependency> --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-test</artifactId><version>1.4.1.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>1.4.1.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>1.4.1.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.3.1.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.3.1.RELEASE</version></dependency><!-- end --><!-- mybatis --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.1.1</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.2</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.2.6</version></dependency><!-- <dependency> <groupId>org.apache.ibatis</groupId> <artifactId>ibatis-sqlmap</artifactId> <version>2.3.0</version> </dependency> --><!-- <dependency> <groupId>org.apache.ibatis</groupId> <artifactId>ibatis-core</artifactId> <version>3.0</version> </dependency> --><!-- end --><!-- 配置mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.17</version></dependency><!-- end --><!-- 配置C3P0数据源 --><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.2.1</version></dependency><!-- end --><!--util --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.4</version></dependency><!-- 添加缓存支持 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId><version>1.4.1.RELEASE</version></dependency><!-- 使用ehcache缓存方案 --><dependency><groupId>net.sf.ehcache</groupId><artifactId>ehcache</artifactId><version>2.9.0</version></dependency><!-- redis缓存 --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.8.2</version></dependency><!-- springboot整合 redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-redis</artifactId><version>1.4.1.RELEASE</version></dependency></dependencies><!-- 打包成一个可执行的jar包 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>1.4.1.RELEASE</version></plugin></plugins></build><!-- 项目发布仓库 --><distributionManagement><repository><id>releases</id><name>Nexus Release Repository</name><url>http://localhost:8081/nexus/content/repositories/releases/</url></repository><snapshotRepository><id>snapshots</id><name>Nexus Snapshot Repository</name><url>http://localhost:8081/nexus/content/repositories/snapshots/</url></snapshotRepository></distributionManagement></project>
然后创建包,命名为com.spring.boot.base,在该包下创建DataBaseConfig.java文件,文件内容如下:
/*** Copyright (c) Windliven 2016 All Rights Reserved** @author liyj* @date 2017年7月12日 上午9:53:09* @since V1.0.0*/package com.spring.boot.base;import javax.sql.DataSource;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.mapper.MapperScannerConfigurer;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import org.springframework.transaction.PlatformTransactionManager;import org.springframework.transaction.annotation.EnableTransactionManagement;import com.mchange.v2.c3p0.ComboPooledDataSource;/*** TODO** @author liyj* @date 2017年7月12日 上午9:53:09**/@Configuration@EnableTransactionManagementpublic class DataBaseConfig {private final Logger log = LoggerFactory.getLogger(DataBaseConfig.class);@Bean@Primarypublic DataSource getDataSource() throws Exception {log.debug("config dataSource");ComboPooledDataSource cpds = new ComboPooledDataSource();cpds.setDriverClass("com.mysql.jdbc.Driver");cpds.setJdbcUrl("jdbc:mysql://localhost:3306/springboot");cpds.setUser("root");cpds.setPassword("root");return cpds;}@Beanpublic PlatformTransactionManager getTransactionManager() throws Exception {return new DataSourceTransactionManager(getDataSource());}@Beanpublic SqlSessionFactory getSqlSessionFactory() throws Exception {SqlSessionFactoryBean sfb = new SqlSessionFactoryBean();sfb.setDataSource(getDataSource());sfb.setTypeAliasesPackage("com.spring.boot.entity");PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();sfb.setMapperLocations(resolver.getResources("classpath:/mapper/*.xml"));return sfb.getObject();}@Beanpublic MapperScannerConfigurer getMapperScannerConfigurer() {MapperScannerConfigurer msc = new MapperScannerConfigurer();msc.setBasePackage("com.mybloc.personal.mapper");msc.setSqlSessionFactoryBeanName("sqlSessionFactory");return msc;}}
创建一个包,命名为com.spring.boot.dao,在该包下创建UserMapper.java文件,该文件是一个接口类,内容如下:
/*** Copyright (c) Windliven 2016 All Rights Reserved** @author liyj* @date 2017年7月11日 下午6:24:35* @since V1.0.0*/package com.spring.boot.dao;import java.util.List;import com.spring.boot.entity.UserEntity;/*** TODO** @author liyj* @date 2017年7月11日 下午6:24:35**/public interface UserMapper {public void insertOne(UserEntity entity);public void delete(UserEntity entity);public void update(UserEntity entity);public UserEntity getOne(UserEntity entity);public List<UserEntity> getList();}
在src/main/resources目录下创建一个mapper文件目录,在该目录下创建UserMapper.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.spring.boot.dao.UserMapper"><!-- 增 --><insert id="insertOne" parameterType="UserEntity">insert into user(id,name,pass,email,iphone)values(#{id},#{name},#{pass},#{email},#{iphone})</insert><!-- 删 --><delete id="delete" parameterType="UserEntity">delete from user where id = #{id}</delete><!-- 改 --><update id="update" parameterType="UserEntity">update user set email = #{email},iphone = #{iphone} where id = #{id}</update><!-- 查 --><select id="getOne" parameterType="UserEntity" resultType="UserEntity">select id,name,pass,email,iphonefrom userwhere id = #{id} </select><!-- 查集合 --><select id="getList" resultType="UserEntity">select id,name,pass,email,iphonefrom user </select></mapper>
接下来创建包,命名为:com.spring.boot.service,在该包下创建UserServiceImpl.java文件,内容如下:
/*** Copyright (c) Windliven 2016 All Rights Reserved** @author liyj* @date 2017年7月11日 下午4:18:55* @since V1.0.0*/package com.spring.boot.service;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import com.spring.boot.dao.UserMapper;import com.spring.boot.entity.UserEntity;import com.spring.boot.inter.service.UserService;/*** TODO** @author liyj* @date 2017年7月11日 下午4:18:55**/@Transactional(readOnly=false)@Servicepublic class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;/** @see com.spring.boot.inter.service.UserService#insert(com.spring.boot.entity.UserEntity)*/public void insert(UserEntity entity) {userMapper.insertOne(entity);System.out.println("insert");}/** @see com.spring.boot.inter.service.UserService#deleteEntity(com.spring.boot.entity.UserEntity)*/public void deleteEntity(UserEntity entity) {userMapper.delete(entity);System.out.println("deleteEntity");}/** @see com.spring.boot.inter.service.UserService#deleteById(java.lang.String)*/public void deleteById(String id) {userMapper.delete(new UserEntity(id));System.out.println("deleteById");}/** @see com.spring.boot.inter.service.UserService#updateEntity(com.spring.boot.entity.UserEntity)*/public void updateEntity(UserEntity entity) {userMapper.update(entity);System.out.println("updateEntity");}/** @see com.spring.boot.inter.service.UserService#updateById(java.lang.String)*/public void updateById(String id) {userMapper.update(new UserEntity(id));System.out.println("updateById");}/** @see com.spring.boot.inter.service.UserService#getOne(java.lang.String)*/@Transactional(readOnly=true)public UserEntity getOne(String id) {return userMapper.getOne(new UserEntity(id));}/** @see com.spring.boot.inter.service.UserService#getList()*/@Transactional(readOnly=true)public List<UserEntity> getList() {return userMapper.getList();}}
再创建一个包,命名为com.spring.boot.controller,在该包下创建UserController.java文件,内容如下:
/*** Copyright (c) Windliven 2016 All Rights Reserved** @author liyj* @date 2017年7月11日 下午6:08:00* @since V1.0.0*/package com.spring.boot.controller;import java.util.Collection;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.cache.Cache;import org.springframework.cache.CacheManager;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.ValueOperations;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import com.spring.boot.entity.UserEntity;import com.spring.boot.inter.service.UserService;/*** TODO** @author liyj* @date 2017年7月11日 下午6:08:00**///@SpringBootApplication(scanBasePackages = {"com.spring.boot"})@RestController@RequestMapping("/user")public class UserController {@Autowiredprivate UserService userService;@Autowiredprivate CacheManager cacheManager;@Autowiredprivate RedisTemplate<String,String> redisTemplate;@Value("${testName}")private String name;@Value("${testPass}")private String pass;@RequestMapping(value = "/say", method = RequestMethod.GET)public String sayHello() {return "hello spring boot";}@RequestMapping(value = "/insert", method = RequestMethod.GET)public String insert() {UserEntity userEntity = new UserEntity();userEntity.setId("111");userEntity.setName("liyj");userEntity.setPass("123456");userEntity.setEmail("704603154@qq.com");userEntity.setIphone("18211140412");userService.insert(userEntity);return "success";}@RequestMapping(value = "/one/get", method = RequestMethod.GET)public UserEntity getOne(@RequestParam String id) {return userService.getOne(id);}}
接着创建一个包,命名为com.spring.boot.start,在该包下创建StartMain.java文件,内容如下:
/*** Copyright (c) Windliven 2016 All Rights Reserved** @author liyj* @date 2017年7月11日 下午4:52:32* @since V1.0.0*/package com.spring.boot.start;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;/*** TODO** @author liyj* @date 2017年7月11日 下午4:52:32**/@EnableAutoConfiguration @ComponentScan(basePackages = "com.spring.boot") @Configuration@MapperScan(value={"com.spring.boot.dao"})public class StartMain {public static void main(String[] args) {SpringApplication.run(StartMain.class, args);}}
最后测试,启动StartMain类中的main()方法,项目便启动了,可以正常的从浏览器中访问和测试。
总结
以上所述是小编给大家介绍的Spring Boot整合mybatis(一)实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对VeVb武林网网站的支持!
新闻热点
疑难解答
图片精选