上一篇文章介绍了Mybatis的入门程序,接着之前的继续,可以实现对Mybatis的增删改查。
首先需要对测试类进行修改。
package com.w.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
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 com.w.pojo.User;
public class UserTest1 {
public static void main(String[] args) throws IOException {
// 根据id查询用户
// getUserById();
// 根据用户名称模糊查询用户列表
// getUserByUsername();
// 添加用户
// inserUser();
// 更新用户
// updateUser();
// 删除用户
deleteUserById();
}
private static void deleteUserById() throws IOException {
// 加载核心配置文件
String resource = "sqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 创建SqlSession
SqlSession openSession = sqlSessionFactory.openSession();
User user = new User();
user.setId(30);
int insert = openSession.insert("deleteUserById", user);
openSession.commit();
// System.out.println(user.getId());
}
// 更新用户
private static void updateUser() throws IOException {
// 加载核心配置文件
String resource = "sqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 创建SqlSession
SqlSession openSession = sqlSessionFactory.openSession();
User user = new User();
user.setId(30);
user.setAddress("New York");
user.setBirthday(new Date());
user.setUsername("lucy");
user.setSex("1");
int insert = openSession.insert("updateUser", user);
openSession.commit();
// System.out.println(user.getId());
}
// 添加用户
private static void inserUser() throws IOException {
// 加载核心配置文件
String resource = "sqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 创建SqlSession
SqlSession openSession = sqlSessionFactory.openSession();
User user = new User();
user.setAddress("cross");
user.setBirthday(new Date());
user.setUsername("lisa");
user.setSex("2");
int insert = openSession.insert("inserUser", user);
openSession.commit();
System.out.println(user.getId());
}
// 根据用户名称查询用户列表
private static void getUserByUsername() throws IOException {
// 加载核心配置文件
String resource = "sqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 创建SqlSession
SqlSession openSession = sqlSessionFactory.openSession();
String username = "李";
List<User> users = openSession.selectList("getUserByUserName", username);
for (User user : users) {
System.out.println(user);
}
}
// 根据id查询用户
public static void getUserById() throws IOException {
// 加载核心配置文件
String resource = "sqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 创建SqlSession
SqlSession openSession = sqlSessionFactory.openSession();
// 执行sql语句
User user = openSession.selectOne("getUserById", 10);
System.out.println(user);
}
}
然后修改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">
<!-- 根据id查用户 -->
<mapper namespace="com.w.mapper.UserMapper">
<select id="getUserById" parameterType="Integer"
resultType="com.w.pojo.User">
select * from user where id=#{v}
</select>
<!-- 根据用户名称查询用户列表 -->
<select id="getUserByUserName" parameterType="String"
resultType="com.w.pojo.User">
select * from user where username like '%${value}%'
</select>
<!-- 添加用户 -->
<insert id="inserUser" parameterType="com.w.pojo.User">
<selectKey order="AFTER" resultType="Integer"
keyProperty="id">
select LAST_INSERT_ID()
</selectKey>
insert into user
(username,birthday,address,sex) values
(#{username},#{birthday},#{address},#{sex})
</insert>
<!-- 更新用户 -->
<update id="updateUser" parameterType="com.w.pojo.User">
update user set
username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}
where id=#{id}
</update>
<!-- 删除用户 -->
<delete id="deleteUserById" parameterType="com.w.pojo.User">
delete from user where id=#{id}
</delete>
</mapper>
这里需要说一下,当你创建用户的时候,由于用户id是自增的,所以你想获得id应该使用selectKey那段代码:
<selectKey order="AFTER" resultType="Integer"
keyProperty="id">
select LAST_INSERT_ID()
</selectKey>
其中的order表示的是你是自动生成的就写AFTER,也就是主键是自动生成后再取出的,如果写BEFORE就是表示你先生成了一个ID,然后再去执行操作,resultType表示类型,keyPorperty表示的是主键对应数据库表中的字段。
再一个就是模糊查询时需要用到的是${value},而不是#{任意值}。由于#{}表示占位符,如果放到数据库中则表示username='李',如果使用${value}就表示username=李,在数据库中查询会报错。所以使用 username like '%#{username}%'就相当于是'%'李'%',如果你想用#{}去写like的话,应该改为 username like "%"#{username}"%"。
以上就是实现增删改查的基本操作实现了,希望对你有帮助。喜欢的朋友可以关注我微信的公众号:从小白到架构师。我会每天更新学习内容的。