1:首先pom.xml导入jdbc和mybatis和druid相关依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.31</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
2:application.yml中加入
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/database?useUnicode\=true&characterEncoding\=UTF-8
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource
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
如果你是application.properties也是一样的,直接把冒号改成.就行,如:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.url=jdbc:mysql://localhost:3306/database?useUnicode\=true&characterEncoding\=UTF-8
..............................................
依次如下
以下皆为案例演示,通过案例了解。
先贴User
package com.nework.course01.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
public class User {
private String uuid;
private String username;
private String password;
private String isRoot;
private Date registerDate;
private Integer status;
public User() {
}
public User(String uuid, String username, String password) {
this.uuid = uuid;
this.username = username;
this.password = password;
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getIsRoot() {
return isRoot;
}
public void setIsRoot(String isRoot) {
this.isRoot = isRoot;
}
public Date getRegisterDate() {
return registerDate;
}
public void setRegisterDate(Date registerDate) {
this.registerDate = registerDate;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
@Override
public String toString() {
return "User{" +
"uuid='" + uuid + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
", isRoot='" + isRoot + '\'' +
", registerDate=" + registerDate +
", status=" + status +
'}';
}
}
3:以UserMapper为例
package com.nework.course01.mapper;
import com.nework.course01.domain.User;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Component;
import java.util.List;
@Mapper
@Component(value ="userMapper")
public interface UserMapper {
@Select("select * from user where username=#{username}")
//@Result 修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰。
User findUserByUsername(@Param("username")String username);
@Select("select * from user where username=#{username} and password=#{password}")
User findUserByUsernameAndPassword(@Param("username")String username,@Param("password")String password);
@Select("select * from user")
@Results({
@Result(property = "uuid", column = "uuid", javaType = String.class),
@Result(property = "username", column = "username",javaType = String.class),
@Result(property = "password", column = "password",javaType = String.class),
@Result(property = "isRoot", column = "isRoot",javaType = String.class),
@Result(property = "registerDate", column = "registerDate",javaType = java.util.Date.class),
@Result(property = "status", column = "status",javaType = Integer.class),
})
List<User> findAllUser();
@Insert("insert into user(uuid,username,password,isRoot,registerDate,status) " +
" values(#{uuid}, #{username}, #{password},#{isRoot},#{registerDate},#{status})")
void saveUser(@Param("user")User user);
@Delete("delete from user where uuid =#{uuid}")
void deleteUserByUUID(@Param("uuid")String uuid);
@Update("update user set password=#{password},status=#{status} where uuid=#{uuid}")
void updateUser(@Param("user")User user);
}
注意:这里UserMapper里的方法需要用@Param("形参名")进行修饰,不然会报错,如下:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'username' not found. Available parameters are [1, 0, param1, param2]
4:以UserService 为例
package com.nework.course01.service;
import com.nework.course01.domain.User;
import java.util.List;
public interface UserService {
User findUserByUsername(String username);
User findUserByUsernameAndPassword(String username,String Password);
List<User> findAllUser();
String saveUser(User user);
void deleteUserByUUID(String uuid);
void updateUser(User user);
}
5:以UserServiceImpl 为例
package com.nework.course01.service.impl;
import com.nework.course01.domain.User;
import com.nework.course01.mapper.UserMapper;
import com.nework.course01.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Transactional(readOnly = true)
@Override
public User findUserByUsername(String username) {
return userMapper.findUserByUsername(username);
}
@Override
public User findUserByUsernameAndPassword(String username, String Password) {
return userMapper.findUserByUsernameAndPassword(username,Password);
}
@Transactional(readOnly = true)
@Override
public List<User> findAllUser() {
return userMapper.findAllUser();
}
@Transactional
@Override
public String saveUser(User user) {
userMapper.saveUser(user);
return user.getUuid();
}
@Transactional
@Override
public void deleteUserByUUID(String uuid) {
userMapper.deleteUserByUUID(uuid);
}
@Transactional
@Override
public void updateUser(User user) {
userMapper.updateUser(user);
}
}
6:以SystemController 为例
package com.nework.course01.controller;
import com.nework.course01.domain.User;
import com.nework.course01.service.UserService;
import com.nework.course01.util.JsonResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
@RequestMapping("/system")
public class SystemController {
Logger logger = LoggerFactory.getLogger(getClass());
@Resource(name = "userService")
UserService userService;
@GetMapping("/login")
@ResponseBody
public String login( @RequestParam String username, @RequestParam String password){
User user= userService.findUserByUsernameAndPassword(username,password);
logger.info("{}",user);
}
@GetMapping("/add")
@ResponseBody
public void addUser() {
User user = new User();
user.setStatus(1);
user.setUuid(UUID.randomUUID().toString().replace("-", ""));
user.setRegisterDate(new Date());
user.setPassword("123456");
user.setIsRoot("0");
user.setUsername("haha");
String uuid = userService.saveUser(user);
logger.info("增加成功:uuid:{}", uuid);
}
}
这样基本就配置完成了,当然还有复杂的sql语句需要拼接,注解模式是难以操作的,该怎么做呢,等下次更新,谢谢。
本文详细介绍如何在项目中整合MyBatis,并通过具体案例演示其使用方法,包括配置文件设置、实体类定义、Mapper接口编写及Service层实现。
2134

被折叠的 条评论
为什么被折叠?



