实体类
package pojo;
public class User {
private int id;
private String name;
private String password;
public User() {
}
public User(int id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
UserDao接口
package dao;
import pojo.User;
import java.util.List;
public interface UserDao {
//获得所有用户
public List<User> getUsers();
//获得指定id的用户
public User getUserById(int id);
//添加用户
public int insertUser(User user);
//更新用户信息
public int updateUser(User user);
//删除用户
public int deleteUser(int id);
}
Mapper配置文件
<?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="dao.UserDao">
<select id="getUsers" resultType="pojo.User">
select * from mybaits.`user`;
</select>
<select id="getUserById" parameterType="int" resultType="pojo.User">
select * from mybaits.user where `id`=#{id};
</select>
<insert id="insertUser" parameterType="pojo.User" >
insert into mybaits.user values(#{id},#{name},#{password});
</insert>
<update id="updateUser" parameterType="pojo.User">
update `user` set `name`=#{name},`password`=#{password} where id=#{id};
</update>
<delete id="deleteUser" parameterType="int">
delete from `user` where id=#{id};
</delete>
</mapper>
测试类
import dao.UserDao;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import pojo.User;
import utils.MybatisUtils;
import java.util.List;
public class UserMapper {
@Test
public void test(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> users = mapper.getUsers();
for (User user : users) {
System.out.println(user);
}
sqlSession.close();
}
@Test
public void testGetUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
User user = mapper.getUserById(1);
System.out.println(user.getName());
sqlSession.close();
}
@Test
public void testInsertUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
int niuliu = mapper.insertUser(new User(4, "niuliu", "0000000"));
if(niuliu>0){
System.out.println("插入成功!");
}
sqlSession.commit();
sqlSession.close();
}
@Test
public void testupdateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
mapper.updateUser(new User(4,"kang","000000"));
sqlSession.commit();
sqlSession.close();
}
@Test
public void testDeleteUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
mapper.deleteUser(4);
sqlSession.commit();
sqlSession.close();
}
}
万能Map
我们可以定义一个方法,比如插入一个用户的时候,原本我们是需要传递一个User对象来插入的,但是当我们数据库中的字段多了之后,我们就需要为这个对象添加很多值
//添加用户
public int insertUser2(Map<String,Object> map);
Mapper配置文件
这里我们需要传入map类型的参数,这么做的好处就是我们去参数的时候可以不需要按照User对象中的严格相同,可以在后面往map中添加
<?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="dao.UserDao">
<insert id="insertUser2" parameterType="map" >
insert into mybaits.user values(#{id},#{name},#{password});
</insert>
</mapper>
测试类
这里创建了一个map集合,然后往map中添加了三个参数
import dao.UserDao;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import pojo.User;
import utils.MybatisUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class UserMapper {
@Test
public void testInsertUser2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
Map<String,Object> map=new HashMap<>();
map.put("id",4);
map.put("name","hello");
map.put("password","000000");
int i = mapper.insertUser2(map);
if(i>0){
System.out.println("插入成功!");
}
sqlSession.commit();
sqlSession.close();
}
}
本文介绍了如何通过Map对象在Mybatis中实现插入、更新等操作的灵活性,避免硬编码对象属性。通过map参数,可以更方便地处理复杂数据库字段,提高代码复用性。

被折叠的 条评论
为什么被折叠?



