[SpringBoot]IDEA快速構建SpringBoot應用專案(二)整合Mybatis + Druid
阿新 • • 發佈:2019-02-12
配置 pom.xml
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId >
<artifactId>mysql-connector-java</artifactId>
</dependency>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin >
<!-- mybatis generator 自動生成程式碼外掛 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration >
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
</plugins>
</build>
配置 application.yml
server:
port: 8081
spring:
datasource:
name: test
url: jdbc:mysql://101.201.117.102:3306/smb-web?useUnicode=true&useSSL=false&characterEncoding=UTF-8
username: root
password: sp6161266
# 使用druid資料來源
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.shaonaozu.demo100.*.model
專案完整結構
Test表
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT '',
`content` varchar(255) DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
Test實體類
package com.shaonaozu.demo100.test.model;
public class Test {
private Integer id;
private String title;
private String content;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title == null ? null : title.trim();
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content == null ? null : content.trim();
}
}
TestMapper.java
package com.shaonaozu.demo100.test.dao;
import com.shaonaozu.demo100.test.model.Test;
import org.springframework.stereotype.Component;
@Component
public interface TestMapper {
int deleteByPrimaryKey(Integer id);
int insert(Test record);
int insertSelective(Test record);
Test selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(Test record);
int updateByPrimaryKey(Test record);
}
TestMapper.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.shaonaozu.demo100.test.dao.TestMapper" >
<resultMap id="BaseResultMap" type="com.shaonaozu.demo100.test.model.Test" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="title" property="title" jdbcType="VARCHAR" />
<result column="content" property="content" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
id, title, content
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from test
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from test
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.shaonaozu.demo100.test.model.Test" >
insert into test (id, title, content
)
values (#{id,jdbcType=INTEGER}, #{title,jdbcType=VARCHAR}, #{content,jdbcType=VARCHAR}
)
</insert>
<insert id="insertSelective" parameterType="com.shaonaozu.demo100.test.model.Test" >
insert into test
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="id != null" >
id,
</if>
<if test="title != null" >
title,
</if>
<if test="content != null" >
content,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="id != null" >
#{id,jdbcType=INTEGER},
</if>
<if test="title != null" >
#{title,jdbcType=VARCHAR},
</if>
<if test="content != null" >
#{content,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.shaonaozu.demo100.test.model.Test" >
update test
<set >
<if test="title != null" >
title = #{title,jdbcType=VARCHAR},
</if>
<if test="content != null" >
content = #{content,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.shaonaozu.demo100.test.model.Test" >
update test
set title = #{title,jdbcType=VARCHAR},
content = #{content,jdbcType=VARCHAR}
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>
TestService
package com.shaonaozu.demo100.test.service;
import com.shaonaozu.demo100.base.R;
import com.shaonaozu.demo100.base.enums.REnums;
import com.shaonaozu.demo100.base.exception.RException;
import com.shaonaozu.demo100.test.dao.TestMapper;
import com.shaonaozu.demo100.test.model.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class TestService {
@Autowired
private TestMapper testMapper;
public R test1(Integer id) throws Exception {
R r = new R();
Test test = testMapper.selectByPrimaryKey(id);
if (test == null) {
throw new RException(REnums.NO_DATA);
}
return r.setData(test);
}
public void test2(Test test) throws Exception {
testMapper.insertSelective(test);
}
}
TestServiceTest.java
package com.shaonaozu.demo100.test.service;
import com.shaonaozu.demo100.base.R;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestServiceTest {
@Autowired
private TestService testService;
@Test
public void test1() throws Exception {
R r = testService.test1(3);
System.out.println(r.toString());
// Assert.assertEquals(new Integer(11), new Integer(9));
}
@Test
public void test2() throws Exception {
com.shaonaozu.demo100.test.model.Test test = new com.shaonaozu.demo100.test.model.Test();
test.setTitle("(*^_^*)");
test.setContent("嘻嘻1111111111");
testService.test2(test);
}
}
執行 test2() 後,資料表結果: