Spring Boot整合mybatis(一)實(shí)例代碼
sprig-boot是一個(gè)微服務(wù)架構(gòu),加快了spring工程快速開發(fā),以及簡(jiǎn)便了配置。接下來開始spring-boot與mybatis的整合。
1、創(chuàng)建一個(gè)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節(jié)點(diǎn)配置的倉庫為當(dāng)前工程打包時(shí)發(fā)布的倉庫 --> </project> 然后創(chuàng)建一個(gè)包,命名為com.spring.boot.entity,在該包下創(chuàng)建一個(gè)User.java文件,內(nèi)容如下: /** * 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工程創(chuàng)建完成。
2、創(chuàng)建一個(gè)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節(jié)點(diǎn)配置的倉庫為當(dāng)前工程打包時(shí)發(fā)布的倉庫 --> </project> 然后創(chuàng)建一個(gè)包,命名為com.spring.boot.inter.service,在該包下創(chuàng)建UserService.java接口類。內(nèi)容如下: /** * 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、創(chuàng)建一個(gè)maven工程,命名為spring-boot-main,pom.xml文件內(nèi)容如下:
<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驅(qū)動(dòng) --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.17</version> </dependency> <!-- end --> <!-- 配置C3P0數(shù)據(jù)源 --> <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> <!-- 打包成一個(gè)可執(zhí)行的jar包 --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.4.1.RELEASE</version> </plugin> </plugins> </build> <!-- 項(xiàng)目發(fā)布倉庫 --> <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>
然后創(chuàng)建包,命名為com.spring.boot.base,在該包下創(chuàng)建DataBaseConfig.java文件,文件內(nèi)容如下:
/** * 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 @EnableTransactionManagement public class DataBaseConfig { private final Logger log = LoggerFactory.getLogger(DataBaseConfig.class); @Bean @Primary public 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; } @Bean public PlatformTransactionManager getTransactionManager() throws Exception { return new DataSourceTransactionManager(getDataSource()); } @Bean public 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(); } @Bean public MapperScannerConfigurer getMapperScannerConfigurer() { MapperScannerConfigurer msc = new MapperScannerConfigurer(); msc.setBasePackage("com.mybloc.personal.mapper"); msc.setSqlSessionFactoryBeanName("sqlSessionFactory"); return msc; } }
創(chuàng)建一個(gè)包,命名為com.spring.boot.dao,在該包下創(chuàng)建UserMapper.java文件,該文件是一個(gè)接口類,內(nèi)容如下:
/** * 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目錄下創(chuàng)建一個(gè)mapper文件目錄,在該目錄下創(chuàng)建UserMapper.xml文件,內(nèi)容如下:
<?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, iphone from user where id = #{id} </select> <!-- 查集合 --> <select id="getList" resultType="UserEntity"> select id, name, pass, email, iphone from user </select> </mapper>
接下來創(chuàng)建包,命名為:com.spring.boot.service,在該包下創(chuàng)建UserServiceImpl.java文件,內(nèi)容如下:
/** * 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) @Service public class UserServiceImpl implements UserService { @Autowired private 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(); } }
再創(chuàng)建一個(gè)包,命名為com.spring.boot.controller,在該包下創(chuàng)建UserController.java文件,內(nèi)容如下:
/** * 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 { @Autowired private UserService userService; @Autowired private CacheManager cacheManager; @Autowired private 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); } }
接著創(chuàng)建一個(gè)包,命名為com.spring.boot.start,在該包下創(chuàng)建StartMain.java文件,內(nèi)容如下:
/** * 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); } }
最后測(cè)試,啟動(dòng)StartMain類中的main()方法,項(xiàng)目便啟動(dòng)了,可以正常的從瀏覽器中訪問和測(cè)試。
總結(jié)
以上所述是小編給大家介紹的Spring Boot整合mybatis(一)實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
詳解springboot整合ehcache實(shí)現(xiàn)緩存機(jī)制
這篇文章主要介紹了詳解springboot整合ehcache實(shí)現(xiàn)緩存機(jī)制,ehcache提供了多種緩存策略,主要分為內(nèi)存和磁盤兩級(jí),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01Java VisualVM監(jiān)控遠(yuǎn)程JVM(詳解)
下面小編就為大家?guī)硪黄狫ava VisualVM監(jiān)控遠(yuǎn)程JVM(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10Java中對(duì)List去重 Stream去重的解決方法
這篇文章主要介紹了Java中對(duì)List去重, Stream去重的問題解答,文中給大家介紹了Java中List集合去除重復(fù)數(shù)據(jù)的方法,需要的朋友可以參考下2018-04-04SMBMS超市訂單管理系統(tǒng)的網(wǎng)站源碼
這篇文章主要介紹了SMBMS超市訂單管理系統(tǒng),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05java多線程之wait(),notify(),notifyAll()的詳解分析
本篇文章是對(duì)java多線程 wait(),notify(),notifyAll()進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06使用maven-archetype-plugin現(xiàn)有項(xiàng)目生成腳手架的方法
這篇文章主要介紹了使用maven-archetype-plugin現(xiàn)有項(xiàng)目生成腳手架的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11spring在service層的方法報(bào)錯(cuò)事務(wù)不會(huì)回滾的解決
這篇文章主要介紹了spring在service層的方法報(bào)錯(cuò)事務(wù)不會(huì)回滾的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02Spring中如何動(dòng)態(tài)注入Bean實(shí)例教程
這篇文章主要給大家介紹了關(guān)于Spring中如何動(dòng)態(tài)注入Bean的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12