public interface UserMapper {
public List<User> findAll();
//根据 id 查询
public User findById(Integer id);
// 插入
public void insert(User user);
//修改
public void update(User user);
//删除
public void delete(int id);
//根据姓名模糊查询
public List<User> findByName(String username);
//查询总数
public Integer findByCount();
}
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.qcby.mapper.UserMapper">
<!--保存操作-->
<insert id="insert" parameterType="com.qcby.model.User">
/*
keyProperty表示要返回的属性名称
order取值AFTER表示插入数据后的行为
resultType表示返回值的类型
*/
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
select last_insert_id();
</selectKey>
insert into user (username,birthday,sex,address) values (#{username},#{birthday},#{sex},#{address})
</insert>
<!-- 修改 -->
<update id="update" parameterType="com.qcby.model.User">
update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
</update>
<!-- 根据 id 删除 -->
<delete id="delete" parameterType="integer">
delete from user where id = #{id}
</delete>
<!-- 查询所有 -->
<select id="findAll" resultType="com.qcby.model.User" >
select * from user;
</select>
<!-- 根据 id 查询 -->
<select id="findById" resultType="com.qcby.model.User">
select * from user where id=#{id};
</select>
<!-- 根据姓名模糊查询-->
<select id="findByName" parameterType="string" resultType="com.qcby.model.User">
/**
第一种方式的 SQL 语句
*/
-- select * from user where username like #{username}
/**
第二种 SQL 语句的编写,强调: '%${value}%' 不能修改,固定写法(推荐使用)
注意:使用第二种 SQL 写法时需要把 SQL 中的注释全部删除否则会报错
*/
select * from user where username like %${value}%
</select>
<!-- 查询总数量 -->
<select id="findByCount" resultType="java.lang.Integer">
select count(*) from user;
</select>
</mapper>
测试代码:
public class MyBatisDemo {
private InputStream in;
private SqlSession session;
private UserMapper userMapper;
@Before
public void init() throws IOException {
//加载配置文件
in = Resources.getResourceAsStream("SqlMapConfig.xml");
//创建工厂对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//创建 Session 对象
session = factory.openSession();
//获取到代理对象
userMapper = session.getMapper(UserMapper.class);
}
@After
public void dstory() throws IOException {
in.close();
session.close();
}
//查询所有
@Test
public void fundAll() throws IOException {
List<User> users = userMapper.findAll();
for (User u : users){
System.out.println(u);
}
in.close();
}
//根据 id 查询
@Test
public void findById() throws IOException {
User user = userMapper.findById(1);
System.out.println(user);
in.close();
}
//插入方法
@Test
public void insert() throws IOException {
User user = new User();
user.setAddress("河北");
user.setBirthday(new Date());
user.setSex("男");
user.setUsername("张翰里");
System.out.println(user);
userMapper.insert(user);
session.commit();
in.close();
}
//修改方法
@Test
public void updage() throws IOException {
User user = new User();
user.setId(1);
user.setAddress("河北");
user.setBirthday(new Date());
user.setSex("男");
user.setUsername("张翰里");
userMapper.update(user);
session.commit();
in.close();
}
//删除方法
@Test
public void delete() throws IOException {
userMapper.delete(2);
session.commit();
in.close();
}
//模糊查询
@Test
public void findByName() throws IOException {
List<User> list = userMapper.findByName("%张%");
for(User u : list){
System.out.println(u);
}
in.close();
}
//查询总量
@Test
public void findCount(){
System.out.println(userMapper.findByCount());
}
}