springboot集成mybatis有两种方式:注解方式和xml配置方式。
项目的相关配置:
1、添加依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
2、application.properties 配置数据源
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=***
一、注解方式
UserMapper:
@Mapper // 可以在Applicationz @MapperScan()
public interface UserMapper {
@Select("SELECT * FROM tb_user")
@Results({
@Result(property = "userName", column = "user_name", jdbcType = JdbcType.VARCHAR),
@Result(property = "userPassword", column = "user_password", jdbcType = JdbcType.VARCHAR),
@Result(property = "userSex", column = "user_sex", jdbcType = JdbcType.CHAR),
@Result(property = "userBirthday", column = "user_birthday", jdbcType = JdbcType.DATE)
})
List<User> getAllUser();
@Select("SELECT * FROM tb_user WHERE uid = #{uid}")
@Results({
@Result(property = "userName", column = "user_name", jdbcType = JdbcType.VARCHAR),
@Result(property = "userPassword", column = "user_password", jdbcType = JdbcType.VARCHAR),
@Result(property = "userSex", column = "user_sex", jdbcType = JdbcType.CHAR),
@Result(property = "userBirthday", column = "user_birthday", jdbcType = JdbcType.DATE)
})
User getUser(int uid);
@Insert("INSERT INTO tb_user(user_name,user_password,user_sex,user_birthday) VALUES(#{userName}, #{userPassword}, #{userSex}, #{userBirthday})")
int insertUser(User user);
@Update("UPDATE tb_user SET user_name = #{userName} WHERE uid = #{uid}")
int updateUser(User user);
@Delete("DELETE FROM tb_user WHERE uid = #{uid}")
int deleteUser(User user);
}
测试:
@RunWith(SpringRunner.class)
@SpringBootTest
public class AnnotionTest {
@Autowired
private UserMapper mapper;
@Test
public void getAllUser(){
List<User> users = mapper.getAllUser();
System.out.println(users);
}
@Test
public void getUser(){
User user = mapper.getUser(3);
System.out.println(user);
}
@Test
public void insertUser(){
User user = new User();
user.setUserName("王杰");
user.setUserPassword("123456546313154546");
user.setUserSex('2');
user.setUserBirthday(new Date());
int result = mapper.insertUser(user);
System.out.println(result);
}
@Test
public void updateUser(){
User user = new User();
user.setUid(3);
user.setUserName("刘冷");
int result = mapper.updateUser(user);
System.out.println(result);
}
@Test
public void deleteUser(){
User user = new User();
user.setUid(3);
int result = mapper.deleteUser(user);
System.out.println(result);
}
}
二、xml配置方式
application.properties 中添加配置:
mybatis.mapper-locations=classpath:/mybatis/mapper/*.xml //映射文件的位置
Application.java中添加注解:
@MapperScan("com.swp.mybatisxml.mapper") // mapper接口的位置
添加映射文件 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.swp.mybatisxml.mapper.UserMapper">
<resultMap id="UserMap" type="com.swp.mybatisxml.model.User">
<id property="uid" column="uid" jdbcType="INTEGER"/>
<result property="userName" column="user_name" jdbcType="VARCHAR"/>
<result property="userPassword" column="user_password" jdbcType="VARCHAR"/>
<result property="userSex" column="user_sex" jdbcType="CHAR"/>
<result property="userBirthday" column="user_birthday" jdbcType="DATE"/>
</resultMap>
<sql id="Base_Column">
uid, user_name, user_password, user_sex, user_birthday
</sql>
<select id="getAllUser" resultMap="UserMap">
SELECT
<include refid="Base_Column"/>
FROM tb_user
</select>
<select id="getUser" resultMap="UserMap" parameterType="java.lang.Integer">
SELECT
<include refid="Base_Column"/>
FROM tb_user WHERE uid = #{uid}
</select>
<insert id="insertUser" parameterType="com.swp.mybatisxml.model.User">
INSERT INTO tb_user(user_name,user_password,user_sex,user_birthday) VALUES(#{userName}, #{userPassword}, #{userSex}, #{userBirthday})
</insert>
<update id="updateUser" parameterType="com.swp.mybatisxml.model.User">
UPDATE tb_user SET
<if test="userName != null">user_name = #{userName}</if>
WHERE uid = #{uid}
</update>
<delete id="deleteUser" parameterType="java.lang.Integer">
DELETE FROM tb_user WHERE uid = #{uid}
</delete>
</mapper>