Mybatis的CRUD
在Dao中声明需要的操作方法
package com.tianqicode.dao;
import com.tianqicode.domain.User;
import java.util.List;
public interface UserDao {
List<User> findAll();
void save(User user);
void update(User user);
void delete(Integer id);
User findOne(int id);
List<User> findByName(String name);
}
在mapper配置文件中准备相应的sql语句以及其他的配置
(注:如果插入MySQL时出现乱码在配置文件application.yml中连接数据库的地址url后面加上characterEncoding=utf8即可)
<?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">
<!-- namespace中填写UserDao的全限定类名 -->
<mapper namespace="com.tianqicode.dao.UserDao">
<!-- 配置查询所有,id属性的取值必须与dao接口的方法同名,resultType属性指明返回类型 -->
<!-- resultType属性中准备返回类型的全限定类名 -->
<select id="findAll" resultType="com.tianqicode.domain.User">
select * from user
</select>
<!-- parameterType属性中准备参数对象的全限定类名 -->
<select id="findOne" resultType="com.tianqicode.domain.User" parameterType="java.lang.Integer">
select * from user where id=#{id}
</select>
<!-- 模糊查询需要在调用查询方法时填写通配符 -->
<select id="findByName" resultType="com.tianqicode.domain.User" parameterType="java.lang.String">
select * from user where userName like #{name}
</select>
<insert id="save" parameterType="com.tianqicode.domain.User">
insert into user(username,birthday,sex,address) values (#{userName},#{birthday},#{sex},#{address})
</insert>
<update id="update" parameterType="com.tianqicode.domain.User">
update user set username=#{userName}, birthday=#{birthday}, sex=#{sex}, address=#{address} where id=#{id}
</update>
<delete id="delete" parameterType="java.lang.Integer">
delete from user where id=#{id}
</delete>
</mapper>
准备测试类,在执行增删改操作时需要手动提交事务
package com.tianqicode;
import com.tianqicode.dao.UserDao;
import com.tianqicode.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
public class test {
private SqlSession session;
private UserDao userDao;
private InputStream in;
@Before
public void init() throws Exception{
//1、读取配置文件
in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2、创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3、使用工厂生产SqlSession对象
session = factory.openSession();
//4、使用SqlSession创建Dao代理对象
userDao = session.getMapper(UserDao.class);
}
@After
public void destroy() throws Exception{
//6、释放资源
session.close();
in.close();
}
@Test
public void testSelect() {
System.out.println("########查询所有########");
List<User> users = userDao.findAll();
for (User user : users) {
System.out.println(user);
}
System.out.println("########查询一个########");
System.out.println(userDao.findOne(1));
System.out.println("########模糊查询########");
List<User> usersByNames = userDao.findByName("%A%");
for (User userByName : usersByNames) {
System.out.println(userByName);
}
}
@Test
public void testSave() {
User user = new User();
user.setUserName("AA");
user.setBirthday(new Date());
user.setAddress("科大");
user.setSex("男");
user.setId(6);
userDao.save(user);
session.commit();
System.out.println("###################################");
List<User> afterUsers = userDao.findAll();
for (User afterUser : afterUsers) {
System.out.println(afterUser);
}
}
@Test
public void testUpdate() {
User user = new User();
user.setUserName("AA");
user.setBirthday(new Date());
user.setAddress("科大");
user.setSex("男");
user.setId(6);
userDao.update(user);
session.commit();
}
@Test
public void testDelete() {
userDao.delete(5);
session.commit();
}
}