SpringBoot
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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.lanou</groupId>
<artifactId>ssh</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>ssh</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.2.4</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
generatorConfig.xml
<?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">
<generatorConfiguration>
<context id="default" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="com.lanou.util.MyMapper"/>
</plugin>
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection
driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/MVCDB?characterEncoding=utf-8"
userId="root"
password="123456">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<javaModelGenerator targetPackage="com.lanou.model" targetProject="./src/main/java">
<property name="enableSubPackages" value="false"/>
<property name="constructorBased" value="true"/>
<property name="trimStrings" value="true"/>
<property name="immutable" value="false"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="mappers" targetProject="./src/main/resources">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.lanou.dao" targetProject="./src/main/java">
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<table tableName="User" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
反向生成
雙擊擊mybatis-generator下的mybatis-generator:generate
會自動生成mappers包與此包下的UserMapper.xml映射文件
還會自動生成dao包下的UserMapper接口,此接口與UserMapper.xml相對應
還好根據數據庫中的表自動生成model包下的實體類
自動生成的mappers下的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.lanou.dao.UserMapper" >
<resultMap id="BaseResultMap" type="com.lanou.model.User" >
<constructor >
<idArg column="u_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="u_name" jdbcType="VARCHAR" javaType="java.lang.String" />
<arg column="u_password" jdbcType="VARCHAR" javaType="java.lang.String" />
<arg column="u_gender" jdbcType="VARCHAR" javaType="java.lang.String" />
</constructor>
</resultMap>
</mapper>
自動生成的User實體類
package com.lanou.model;
import javax.persistence.*;
public class User {
@Id
@Column(name = "u_id")
private Integer uId;
@Column(name = "u_name")
private String uName;
@Column(name = "u_password")
private String uPassword;
@Column(name = "u_gender")
private String uGender;
public User(Integer uId, String uName, String uPassword, String uGender) {
this.uId = uId;
this.uName = uName;
this.uPassword = uPassword;
this.uGender = uGender;
}
public User() {
super();
}
/**
* @return u_id
*/
public Integer getuId() {
return uId;
}
/**
* @param uId
*/
public void setuId(Integer uId) {
this.uId = uId;
}
/**
* @return u_name
*/
public String getuName() {
return uName;
}
/**
* @param uName
*/
public void setuName(String uName) {
this.uName = uName == null ? null : uName.trim();
}
/**
* @return u_password
*/
public String getuPassword() {
return uPassword;
}
/**
* @param uPassword
*/
public void setuPassword(String uPassword) {
this.uPassword = uPassword == null ? null : uPassword.trim();
}
/**
* @return u_gender
*/
public String getuGender() {
return uGender;
}
/**
* @param uGender
*/
public void setuGender(String uGender) {
this.uGender = uGender == null ? null : uGender.trim();
}
}
自動生成的dao層中的UserMapper
package com.lanou.dao;
import com.lanou.model.User;
import com.lanou.util.MyMapper;
public interface UserMapper extends MyMapper<User> {
}
繼承是生成時自帶的 不過需要在事先配置的文件中進行配置說明
MyMapper這個接口需要自己事先創建,MyMapper繼承了兩個接口
爲了合併這兩個接口中的方法
自己創建的util包下的MyMapper接口
package com.lanou.util;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
public interface MyMapper<T> extends MySqlMapper<T>,Mapper<T> {
}
自己創建的application.yml
server:
port: 8090
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/MVCDB?characterEncoding=utf-8
username: root
password: 123456
mybatis:
type-aliases-package: com.lanou.model
mapper-locations: classpath:mappers/*.xml
mapper:
mappers: com.lanou.util.MyMapper
not-empty: false
identity: MYSQL
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
UserControllerl類
package com.lanou.controller
import com.github.pagehelper.PageHelper
import com.lanou.dao.UserMapper
import com.lanou.model.ConfigBean
import com.lanou.model.User
import com.mysql.jdbc.StringUtils
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Controller
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.ResponseBody
import tk.mybatis.mapper.entity.Example
import java.util.List
@Controller
public class UserController {
@Autowired
private UserMapper userMapper
@Autowired
private ConfigBean configBean
@Value(value = "${page}")
private Integer size
//@GetMapping(value = "/pages")
//@PostMapping
@ResponseBody
@RequestMapping("/pages")
public List<User> selectPage(Integer page,User user){
System.out.println("configBean"+configBean)
PageHelper.startPage(page,size)
//告訴是用哪個類來封裝
Example example = new Example(User.class)
//獲的criteria裏的查詢方法
Example.Criteria criteria = example.createCriteria()
if (!StringUtils.isEmptyOrWhitespaceOnly(user.getName())){
criteria.andLike("name","%"+user.getName()+"%")
}
example.orderBy("age").desc()
return userMapper.selectByExample(example)
}
// @ResponseBody
// @RequestMapping("/select")
// public List<User> select(User user){
//
// System.out.println("la la la la la ...")
// System.out.println("user:"+user)
//
//
// return userMapper.selectB()
//
// }
@ResponseBody
@RequestMapping("/jiadelete")
public int jiadelete(User user){
System.out.println("la la la la la ...")
System.out.println("user:"+user)
user.setUserDeleteld(1)
return userMapper.updateByPrimaryKeySelective(user)
}
@ResponseBody
@RequestMapping("/delete")
public int delete(User user){
System.out.println("la la la la la ...")
System.out.println("user:"+user)
return userMapper.deleteByPrimaryKey(user.getId())
}
@ResponseBody
@RequestMapping("/update")
public int update(User user){
System.out.println("la la la la la ...")
System.out.println("user:"+user)
return userMapper.updateByPrimaryKeySelective(user)
}
@ResponseBody
@RequestMapping("/insert")
public int insert(User user){
System.out.println("la la la la la ...")
System.out.println("user:"+user)
return userMapper.insert(user)
}
@ResponseBody
@RequestMapping("/findUser")
public List<User> hellow(){
System.out.println("la la la la la ...")
return userMapper.selectAll()
}
@ResponseBody
@RequestMapping("/lala")
public String hello(){
System.out.println("la la la la la ...")
return "name"
}
}
定義userMapper需要註解注入 這時UserMapper並沒有被引入Spring中 因此需要加上註解
讓Spring管理UserMapper
SshApplication
package com.lanou;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
@MapperScan(basePackages = "com.lanou.dao")
public class SshApplication {
public static void main(String[] args) {
SpringApplication.run(SshApplication.class, args);
}
}