springboot 2.0x整合mybatis
第一步:创建工程
使用idea创建spring boot工程,引入mybatis ,mysql依赖。
第二步:编写实体类,dao,mapper
User类如下:
public class User {
private Integer userId ;
private String userName ;
private String password ;
private String phone ;
。。。。。(set get ..)
}
UserDao如下:
@Repository
public class UserDao {
@Autowired
private UserMapper mapper ;
public User findUserById (Integer id ){
User user = mapper.findByUserId(id);
return user ;
}
public void saveUser(User user){
mapper.insertUser(user);
}
}
UserMapper如下:
public interface UserMapper {
//采用注解方式,sql语句直接写在方法上
/*@Select("select * from t_user where user_id = #{userId}")
@Results({
@Result(column="user_id",property="userId"),
@Result(column="user_name",property="userName"),
@Result(column="password",property="password"),
@Result(column="phone",property="phone")
})*/
User findByUserId(Integer userId);
//采用xml方式
int insertUser(User user);
}
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.yunda.study.mybatis.dao.mapper.UserMapper" >
<insert id="insertUser" parameterType="com.yunda.study.mybatis.domain.User">
insert into t_user (user_id,user_name,password,phone)
values(
#{userId,jdbcType=INTEGER},
#{userName,jdbcType=VARCHAR},
#{password,jdbcType=VARCHAR},
#{phone,jdbcType=VARCHAR})
)
</insert>
<select id="findByUserId" parameterType="java.lang.Integer" resultType="com.yunda.study.mybatis.domain.User">
select * from t_user where user_id = #{userId}
</select>
</mapper>
说明:
UserDao中装配接口UserMapper,此时接口Mapper是与数据库交互的,dao中调用mapper中的方法,即可返回数据。
接口mapper中实现的数据交互的方式有两种:一是采用注解的方式,二是采用配置文件件的方式。
1、采用注解方式==> 即在mapper接口的方法上,直接加上注解,给出sql语句,参数,以及表中字段与对象属性的映射等。如上代码
2、采用xml配置文件方式==> 在resource目录下新建mapper文件夹,建立UserMapper.xml,编写相应的方法对应的语句,参数,结果类型等。
第三步:配置主配置文件application.yml和注解
注意启动类上要加注解,@MapperScan("com.yunda.boot.mybatis2.dao.mapper")
扫描mapper下的接口,否则无法再dao中注入mapper.
@SpringBootApplication
@MapperScan("com.yunda.boot.mybatis2.dao.mapper")
public class Mybatis2Application {
public static void main(String[] args) {
SpringApplication.run(Mybatis2Application.class, args);
}
}
主配置文件application.yml
配置数据源位置,用户名,密码,开启打印sql语句到控制台,注明mapper文件位置。
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
url: jdbc:mysql://127.0.0.1:3309/sell2?characterEncoding=utf-8&useSSL=false
logging:
level:
#设置mybatis的sql语句打印到控制台。
com.yunda.boot.mybatis2.dao.mapper: trace
mybatis:
mapper-locations: classpath:mapper/*.xml
(补注:)
idea如何拷贝路径(包名+类名)
第四步:新建测试类
右击:新建测试类
@RunWith(SpringRunner.class)
@SpringBootTest
注意测试类上加上注解。
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserDaoTest {
@Autowired
private UserDao dao ;
@Test
public void findUserById() {
User result = dao.findUserById(123);
System.out.print(result.toString());
Assert.assertNotNull(result);
}
@Test
public void testSaveUser() {
User user = new User();
user.setPassword("edcrf");
user.setPhone("1881790807956");
user.setUserId(125);
user.setUserName("李广");
dao.saveUser(user);
}
测试结果如下:
github 源码如下: