springboot +mybatis 用xml配置连接数据源)
pom.xml
springboot整合mybatis+mysql需要添加一些依赖
<!--连接mysql数据库-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--引入mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
这里,我额外加了一个依赖,用来方便不用再写set,get,toString方法
<!--作用于实体类,自动封装get,set方法-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
配置 application.properties
#连接mysql数据库
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8 &serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#映射mybatis
mybatis.mapper-locations=classpath:com/example/demo/mapper/*Mapper.xml
mybatis.type-aliases-package=com.example.demo.pojo
#打印sql语句
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
表数据及结构
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`phone` varchar(11) DEFAULT NULL COMMENT '手机号',
`name` varchar(50) DEFAULT NULL COMMENT '姓名',
`uuid` varchar(64) DEFAULT NULL COMMENT '盐',
`pwd` varchar(64) DEFAULT NULL COMMENT '密码',
PRIMARY KEY (`id`),
UNIQUE KEY `t_user_uq_phone` (`phone`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES ('2', '15180474821', '周芷若', 'f69a4dd9-3d4b-4dcc-b14a-38409cc60139', 'fbfc54bc51cc3ce90584ca2e052670c8');
INSERT INTO `t_user` VALUES ('3', '13236170925', '敏敏特穆尔', '0ce101df-b9e2-47ad-b279-122107c4ff0a', '6738b1739ff9d78855a241ebb0665a3e');
INSERT INTO `t_user` VALUES ('4', '13479769366', '张无忌', 'bab88b92-3b99-4a8d-a778-f3219af24718', '25b22e9c8a167b55ca29d9ae5b47afb2');
com.example.demo 目录下的代码
项目结构
controller 为控制层,dao为连接mybatis的接口,service.impl为实现类,mapper为连接数据库的sql语句配置
注意,若mapper里的配置文件写在scr.main.java 目录下面,并且编译工具为idea 则需在pom.xml文件下添加入下代码;若为eclipse,则不需添加;若写在resources目录下,都不需要。这里借鉴了一篇博客:https://blog.csdn.net/Sacredness/article/details/82533097
pom.xml里添加的配置为
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
在springboot 的入口 DemoApplication.java处添加
@MapperScan("com.example.demo.dao")
实体类
import lombok.Data;
@Data
public class Tuser {
private Integer id;
private String name;
private String phone;
private String uuid;
private String pwd;
}
TuserDao.java
import com.example.demo.pojo.Tuser;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface TuserDao {
//查看所有Tuser信息
List<Tuser> getListOfTuser();
//根据id查找Tuser对象
Tuser getTuserById(Integer id);
//修改
int UpdateByTuser(Tuser tuser);
//删除
boolean deleteById(Integer id);
//增加
int insertOfTuser(Tuser tuser);
}
service 里的TuserService.java 同 TuserDao.java一样
service.impl
import com.example.demo.dao.TuserDao;
import com.example.demo.pojo.Tuser;
import com.example.demo.service.TuserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class Tuserserviceimpl implements TuserService {
@Autowired
private TuserDao dao;
@Override
public List<Tuser> getListOfTuser() {
return dao.getListOfTuser();
}
@Override
public Tuser getTuserById(Integer id) {
return dao.getTuserById(id);
}
@Override
public int UpdateByTuser(Tuser tuser) {
return dao.UpdateByTuser(tuser);
}
@Override
public boolean deleteById(Integer id) {
return dao.deleteById(id);
}
@Override
public int insertOfTuser(Tuser tuser) {
return dao.insertOfTuser(tuser);
}
}
控制层
@RestController
@RequestMapping("/tuser/")
public class TuserController {
@Autowired
private TuserService tuserServiceimpl;
@GetMapping("getListOfTuser")
public Object getListOfTuser(){
List<Tuser> list=tuserServiceimpl.getListOfTuser();
return list;
}
@GetMapping("getTuserById")
public Object getTuserById(Integer id){
Tuser tuser=tuserServiceimpl.getTuserById(id);
return tuser;
}
@GetMapping("UpdateByTuser")
public Object UpdateByTuser(){
Tuser tuser=new Tuser();
tuser.setId(2);
tuser.setName("钟花花");
tuser.setPhone("11111111111");
tuser.setPwd("123456");
tuser=getMd5(tuser);
int num=tuserServiceimpl.UpdateByTuser(tuser);
return "成功修改的个数"+num;
}
@GetMapping("deleteById")
public Object deleteById(Integer id){
boolean Result=tuserServiceimpl.deleteById(id);
return "是否成功删除"+Result;
}
@RequestMapping("insertOfTuser")
public Object insertOfTuser(){
Tuser tuser=new Tuser();
tuser.setName("钟花花");
tuser.setPhone("12345678912");
tuser.setPwd("123456");
tuser=getMd5(tuser);
int num= tuserServiceimpl.insertOfTuser(tuser);
return "成功增加的个数"+num;
}
public Tuser getMd5(Tuser tuser){
String pwd=tuser.getPwd();
//生成uuid
String uuid= String.valueOf(UUID.randomUUID());
tuser.setUuid(uuid);
//springboot自带的md5加密工具
String md5Password = DigestUtils.md5DigestAsHex((uuid+pwd).getBytes());
tuser.setPwd(md5Password);
return tuser;
}
}
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">
<mapper namespace="com.example.demo.dao.TuserDao">
<sql id="Base_Column_List">
id, phone, name, uuid, pwd
</sql>
<select id="getListOfTuser" resultType="Tuser">
select
<include refid="Base_Column_List" />
from t_user
</select>
<select id="getTuserById" resultType="Tuser" parameterType="java.lang.Integer">
select
<include refid="Base_Column_List" />
from t_user where id=#{id}
</select>
<update id="UpdateByTuser" parameterType="Tuser" >
update t_user
<set>
<if test="phone != null">
phone = #{phone,jdbcType=VARCHAR},
</if>
<if test="name != null">
name = #{name,jdbcType=VARCHAR},
</if>
<if test="uuid != null">
uuid = #{uuid,jdbcType=VARCHAR},
</if>
<if test="pwd != null">
pwd = #{pwd,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<delete id="deleteById" parameterType="java.lang.Integer">
delete from t_user where id=#{id}
</delete>
<insert id="insertOfTuser" parameterType="Tuser">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
insert into t_user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="phone != null">
phone,
</if>
<if test="name != null">
name,
</if>
<if test="uuid != null">
uuid,
</if>
<if test="pwd != null">
pwd,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="phone != null">
#{phone,jdbcType=VARCHAR},
</if>
<if test="name != null">
#{name,jdbcType=VARCHAR},
</if>
<if test="pwd != null">
#{uuid,jdbcType=VARCHAR},
</if>
<if test="pwd != null">
#{uuid,jdbcType=VARCHAR},
</if>
</trim>
</insert>
</mapper>
运行结果
- 运行查看所有Tuser 对象的信息 http://localhost:8080/tuser/getListOfTuser
- 根据id查看Tuser http://localhost:8080/tuser/getTuserById?id=2
- 修改信息 http://localhost:8080/tuser/UpdateByTuser
4.增加信息 http://localhost:8080/tuser/insertOfTuser