springboot整合mybatis
- mybatis pom.xml配置
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
为了方便测试和案例,下面以mysql为例,使用阿里的druid作为数据库连接池来写个mybatis的小demo
- mysql数据库驱动和druid连接池驱动pom.xml
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.31</version>
</dependency>
- boot配置,这里使用yml配置格式
server:
port: 80
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
username: root
password: 123456
url: jdbc:mysql://127.0.0.1:3306/demo?characterEncoding=utf8&useSSL=false
mybatis:
mapperLocations: classpath*:com/boot/mapper/xml/*Mapper.xml
typeAliasesPackage: com.boot.entity
- 新建一个user表,mapper,xml,service,serviceimpl
sql
create table `user`(
name varchar(255),
age varchar(255),
sex varchar(255),
address varchar(255)
);
user bean
public class User implements Serializable{
private static final long serialVersionUID = 1L;
private String name;
private String age;
private String sex;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", sex=" + sex + ", address=" + address + "]";
}
}
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.boot.mapper.UserMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.boot.entity.User">
<id column="name" property="name" />
<result column="age" property="age" />
<result column="sex" property="sex" />
<result column="address" property="address" />
</resultMap>
<select id="selectByName" parameterType="string" resultMap="BaseResultMap">
select * from user
<where>
<if test="name!=null and name!=''">
and name = #{name,jdbcType=VARCHAR}
</if>
</where>
</select>
<select id="selectList" resultMap="BaseResultMap">
select * from user where 1=1
</select>
<insert id="insertOne" parameterType="com.boot.entity.User">
insert user
(name,age,sex,address)
values(#{name,jdbcType=VARCHAR},#{age,jdbcType=VARCHAR},#{sex,jdbcType=VARCHAR},#{address,jdbcType=VARCHAR});
</insert>
<update id="updateOneByName" parameterType="com.boot.entity.User">
update user
set name = #{name,jdbcType=VARCHAR},
age =
#{age,jdbcType=VARCHAR},
sex = #{sex,jdbcType=VARCHAR},
address =
#{address,jdbcType=VARCHAR}
where name = #{name,jdbcType=VARCHAR}
</update>
<delete id="deleteByNmae" parameterType="string">
delete from user where name=#{name,jdbcType=VARCHAR};
</delete>
</mapper>
mapper
public interface UserMapper {
public User selectByName(@Param("name") String name);
public List<User> selectList();
public Integer insertOne(User user);
public Integer updateOneByName(User user);
public Integer deleteByNmae(@Param("name") String name);
}
serviceimpl
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserMapper userMapper;
@Override
public User selectByName(String name) {
return userMapper.selectByName(name);
}
@Override
public List<User> selectList() {
return userMapper.selectList();
}
@Override
public Integer insertOne(User user) {
return userMapper.insertOne(user);
}
@Override
public Integer updateOneByName(User user) {
return userMapper.updateOneByName(user);
}
@Override
public Integer deleteByNmae(String name) {
return userMapper.deleteByNmae(name);
}
}
junit test
package com.boot.mybatistest;
import java.util.List;
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;
import com.boot.entity.User;
import com.boot.serviceimpl.UserServiceImpl;
@RunWith(SpringRunner.class)
@SpringBootTest
public class ServiceTest {
@Autowired
UserServiceImpl userServiceImpl;
@Test
public void testSelectOne() {
User user = userServiceImpl.selectByName("jack");
System.out.println(user);
}
@Test
public void testSelectList() {
List<User> users = userServiceImpl.selectList();
System.out.println(users);
}
@Test
public void testInsertOne() {
User user = new User();
user.setName("jack");
user.setAge("24");
user.setSex("男");
user.setAddress("北京");
int i=userServiceImpl.insertOne(user);
System.out.println(i);
}
@Test
public void updateOne() {
User user = new User();
user.setName("jack");
user.setAge("24");
user.setSex("男");
user.setAddress("上海");
int i=userServiceImpl.updateOneByName(user);
System.out.println(i);
}
@Test
public void testdeleteOne() {
int i= userServiceImpl.deleteByNmae("jack");
System.out.println(i);
}
}
附:yml配置的xml路径和entity的路径,而mapper接口的扫描路径需要在boot的启动main配置注解
@SpringBootApplication
@MapperScan("com.boot.mapper*")
public class BootApplication {
public static void main(String[] args) {
SpringApplication.run(BootApplication.class, args);
}
}