插件和配置
- mybatis
- redis
- mysql
- druid
依賴
<dependencies>
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
配置文件
spring:
thymeleaf:
cache: false
freemarker:
cache: false
groovy:
template.cache: false
# 數(shù)據(jù)源
datasource:
# 數(shù)據(jù)庫的URL腋腮、帳號(hào)雀彼、密碼壤蚜、驅(qū)動(dòng)
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
# 使用druid連接池
type: com.alibaba.druid.pool.DruidDataSource
# druid連接池的配置信息
initialSize: 5
# 最小連接數(shù)量
minIdle: 5
# 最大連接數(shù)量
maxActive: 20
# 獲取連接等待超時(shí)的時(shí)間
maxWait: 60000
# 間隔多久進(jìn)行一次檢測(cè)(需要關(guān)閉的空閑連接)
timeBetweenEvictionRunsMillis: 30000
# 連接在池中最小生存的時(shí)間
minEvictableIdleTimeMillis: 30000
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# MyBatis 配置
mybatis:
# mybatis的mapper.xml文件的路徑
mapper-locations: classpath:mapper/*.xml
# mybatis的model所在的包
type-aliases-package: com.jiataoyuan.demo.springboot.model
# mybatis的model所在的包
編寫程序
結(jié)構(gòu)
db_mybatis_1.png
model
數(shù)據(jù)庫字段對(duì)應(yīng),id自增即可徊哑,自己定義uuid也可以
package com.jiataoyuan.demo.springboot.model;
/**
* @author TaoYuan
* @version V1.0.0
* @date 2018/4/17 0017
* @description description
*/
public class User {
private long id;
private String name;
private int age;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
DAO
package com.jiataoyuan.demo.springboot.dao;
import com.jiataoyuan.demo.springboot.model.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author TaoYuan
* @version V1.0.0
* @date 2018/4/17 0017
* @description description
*
*/
/*
* @Repository 也可以不用添加袜刷,但是不添加之后使用@Autowired注入接口是IDEA會(huì)提示紅線,但是不影響編譯運(yùn)行
* @Mapper 配置自動(dòng)掃描
*/
@Mapper
public interface UserDao {
// xml方式
User findByName(String name);
// 注解方式
@Select("select * from user")
List<User> findAll();
// 添加用戶
int insertUser(@Param("name")String name, @Param("age")Integer age);
}
Service
package com.jiataoyuan.demo.springboot.service;
import com.jiataoyuan.demo.springboot.dao.UserDao;
import com.jiataoyuan.demo.springboot.model.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @author TaoYuan
* @version V1.0.0
* @date 2018/4/17 0017
* @description description
*/
@Service
public class UserService {
@Resource
private UserDao userDao;
public User findByName(String name){
return userDao.findByName(name);
}
public List<User> findAll(){
return userDao.findAll();
}
public int insertUser(@Param("name")String name, @Param("age")Integer age){
return userDao.insertUser(name, age);
}
}
Mapper
<?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">
<!--命名空間莺丑,指定對(duì)應(yīng)的Dao-->
<mapper namespace="com.jiataoyuan.demo.springboot.dao.UserDao">
<!--使用resultType指定輸出類型-->
<select id="findByName" resultType="User">
SELECT * FROM user WHERE name = #{NAME }
</select>
<!-- insert user -->
<insert id="insertUser" parameterType="com.jiataoyuan.demo.springboot.model.User">
insert into user ( name, age) values (#{name,jdbcType=VARCHAR}, #{age, jdbcType=INTEGER})
</insert>
</mapper>
業(yè)務(wù)邏輯主要就是這3個(gè)著蟹,接下來需要寫接口調(diào)用即可
Controller
package com.jiataoyuan.demo.springboot.controller;
import com.jiataoyuan.demo.springboot.model.User;
import com.jiataoyuan.demo.springboot.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author TaoYuan
* @version V1.0.0
* @date 2018/4/16 0016
* @description description
*/
@RestController
@RequestMapping("/db")
public class DBController {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private UserService userService;
@GetMapping()
public String Main(){
return "Welcome to DB Page!";
}
@GetMapping("/find/{name}")
public User findByName(@PathVariable String name){
return userService.findByName(name);
}
@GetMapping("/findall")
public List<User> findAll(){
return userService.findAll();
}
@GetMapping("/insert/{name}/{age}")
public int insert(@PathVariable String name, @PathVariable Integer age){
logger.warn("name =="+ name);
logger.warn("age =="+ age);
return userService.insertUser(name, age);
}
}
測(cè)試
db_mybatis_3.png
db_mybatis_2.png
接下來準(zhǔn)備redis
MyBatis生成插件
<!-- mybatis maven插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
<dependency>
<groupId>com.xxg</groupId>
<artifactId>mbg-limit-plugin</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<configuration>
<overwrite>true</overwrite>
</configuration>
</plugin>
build上面加上這個(gè),不然找不到mbg-limit-plugin
<pluginRepositories>
<pluginRepository>
<id>xxg-repository</id>
<url>http://repo.maven.xxgblog.com/</url>
</pluginRepository>
</pluginRepositories>
這個(gè)文件放在resources下并進(jìn)行修改
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<!-- mybatis生成配置 -->
<!-- 最后一行table元素中修改自己的要生成的表名及實(shí)體名稱 -->
<!--用法: 選擇pom.xml文件,擊右鍵先擇Run AS——Maven Build… ——在Goals框中輸入:mybatis-generator:generate——Run就好了,在工程上刷新-->
<generatorConfiguration>
<context id="call" targetRuntime="MyBatis3" defaultModelType="hierarchical">
<plugin type="com.xxg.mybatis.plugins.MySQLLimitPlugin"></plugin>
<!-- 數(shù)據(jù)庫連接信息 -->
<!-- <jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://172.16.127.201:3306/kaikeba?useUnicode=true&characterEncoding=utf-8"
userId="test"
password="Meihao100@bfbd">
</jdbcConnection> -->
<commentGenerator>
<!-- 是否去除自動(dòng)生成的注釋 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test"
userId="root"
password="123456">
</jdbcConnection>
<!-- model實(shí)體類 -->
<javaModelGenerator targetPackage="com.jiataoyuan.demo.springboot.model" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- sql xml -->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- dao -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.jiataoyuan.demo.springboot.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 表名, 生成的實(shí)體名 -->
<table tableName="user" domainObjectName="User"
enableDeleteByExample="false" enableDeleteByPrimaryKey="false">
<!--<columnOverride column="operate_next_flag" javaType="int"/>-->
<!--<columnOverride column="is_delete" javaType="int"/>-->
</table>
</context>
</generatorConfiguration>
- 注釋部分幾乎不用管
- 數(shù)據(jù)庫地址改成自己的
- model實(shí)體類改成自己的model包名
- sql xml 指定生成的Mapper.xml
- dao改成自己的dao包名
- 表名改成需要生成的model bean梢莽,可以設(shè)置字段類型等萧豆,多個(gè)表則建立多個(gè)table標(biāo)簽
- 如果已經(jīng)有mapper.xml了,把之前的名字改了昏名,否則會(huì)覆寫
然后打開maven project進(jìn)行生成操作
db_mybatis_4.png
自己寫雖然麻煩涮雷,但是定制化程度高,自動(dòng)生成簡(jiǎn)單轻局,也可以改洪鸭,其實(shí)也并不存在太多的定制化,生成后也可以自己改仑扑,總之還是看自己的習(xí)慣吧览爵。