Mybatis增删改查基本操作

一、XML实现方式

1、mapper.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.xml中出现重复的id -->
<mapper namespace="com.mybatis.mapper.UserMapper">
<!-- 新增用户数据 -->
<insert id="insertUser" parameterType="com.mybatis.model.User">
<!-- #{name}相当于jdbc中的的?号,name值与Bean字段对应,可自动获取 -->
insert into users values(#{id}, #{username}, #{password}, #{email}, #{age})
</insert> <!-- 查找用户数据 -->
<select id="selectUser" resultType="com.mybatis.model.User" parameterType="int">
select * from users where id = #{id}
</select> <!-- 查找用户数据集合 -->
<!-- 基本数据类型可以不用写完整类名 -->
<select id="selectUsers" resultType="com.mybatis.model.User" parameterType="int">
select * from users t where t.age = #{age}
</select> <!-- 更新用户数据 -->
<update id="updateUser" parameterType="com.mybatis.model.User">
update users set age = #{age} where id = #{id}
</update> <!-- 删除用户数据 -->
<delete id="deleteUser" parameterType="int">
delete from users where id = #{id}
</delete>
</mapper>
2、单元测试代码
/**
* 使用XML配置实现CRUD操作
*/
public class DbTest2 { private SqlSessionFactory sqlSessionFactory;
/**
* 初始化工作
*/
@Before
public void init() throws IOException {
//通过mybatis提供的资源加载类加载配置文件
Reader reader = Resources.getResourceAsReader("Configuration.xml");
//获取SqlSessionFactoryBuilder
SqlSessionFactoryBuilder sqlSessionFactroyBuilder = new SqlSessionFactoryBuilder();
//根据XML配置文件构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = sqlSessionFactroyBuilder.build(reader);
this.sqlSessionFactory = sqlSessionFactory;
} //新增操作
@Test
public void insertUser() {
//Mybatis默认情况下不会commit,即默认connection.setAutoCommit(false);
//传入true代表自动提交
SqlSession session = sqlSessionFactory.openSession(true);
try {
User user = new User();
user.setId("1");
user.setUsername("zhangsan");
user.setPassword("123456");
user.setAge("18");
user.setEmail("zhangsan@163.com");
session.insert("com.mybatis.mapper.UserMapper.insertUser", user);
} finally {
session.close();
}
} //查询操作
@Test
public void queryUser() {
SqlSession session = sqlSessionFactory.openSession(true);
try {
User user = session.selectOne("com.mybatis.mapper.UserMapper.selectUser", 1);
System.out.println(user);
} finally {
session.close();
}
} //查询多条操作
@Test
public void queryUsers() {
SqlSession session = sqlSessionFactory.openSession(true);
try {
List<User> userList = session.selectList("com.mybatis.mapper.UserMapper.selectUsers", 18);
System.out.println(userList.size());
} finally {
session.close();
}
} //更新操作
@Test
public void updateUser() {
SqlSession session = sqlSessionFactory.openSession(true);
try {
User user = new User();
user.setId("1");
user.setAge("25");
int num = session.update("com.mybatis.mapper.UserMapper.updateUser", user);
System.out.println(num);
} finally {
session.close();
}
} //删除操作
@Test
public void deleteUser() {
SqlSession session = sqlSessionFactory.openSession(true);
try {
int num = session.delete("com.mybatis.mapper.UserMapper.deleteUser", 1);
System.out.println(num);
} finally {
session.close();
}
}
}

二、注解实现

1、编写Mapper接口
* 使用注解的方式配置SQL映射关系
* 需要注意的事此接口不用具体编写实现代码,而将由Mybatis动态的帮我们构建
* 这样的代码由于避免了强制类型转换和参数不匹配的问题,因此更加安全
*/
public interface UserMapperI {
@Insert("insert into users values(#{id}, #{username}, #{password}, #{email}, #{age})")
int insertUser(User user); @Select("select * from users where id = #{id}")
User selectUser(String id); @Select("select * from users t where t.age = #{age}")
List<User> selectUsers(String age); @Update("update users set age = #{age} where id = #{id}")
int updateUser(User user); @Delete("delete from users where id = #{id}")
int deleteUser(String id);
}
2、注册接口
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="database.properties"></properties> <environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!-- 注册sql映射文件 --> <mappers>
<!-- 注册UserMapper.xml文件 -->
<mapper resource="com/mybatis/mapper/UserMapper.xml"/>
<!-- 注册UserMapperI接口 -->
<mapper class="com.mybatis.mapper.UserMapperI"/>
</mappers>
</configuration>
3、单元测试代码
/**
* 使用注解实现CRUD操作
*/
public class DbTest3 {
private SqlSessionFactory sqlSessionFactory;
@Before
public void init() throws IOException {
//通过mybatis提供的资源加载类加载配置文件
Reader reader = Resources.getResourceAsReader("Configuration.xml");
//获取SqlSessionFactoryBuilder
SqlSessionFactoryBuilder sqlSessionFactroyBuilder = new SqlSessionFactoryBuilder();
//根据XML配置文件构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = sqlSessionFactroyBuilder.build(reader);
this.sqlSessionFactory = sqlSessionFactory;
} //新增操作
@Test
public void insertUser() {
SqlSession session = sqlSessionFactory.openSession(true);
try {
UserMapperI mapper = session.getMapper(UserMapperI.class);
User user = new User();
user.setId("1");
user.setUsername("zhangsan");
user.setPassword("123456");
user.setAge("18");
user.setEmail("zhangsan@163.com");
int num = mapper.insertUser(user);
System.out.println(num);
} finally {
session.close();
}
} //查询操作
@Test
public void queryUser() {
SqlSession session = sqlSessionFactory.openSession(true);
try {
UserMapperI mapper = session.getMapper(UserMapperI.class);
User user = mapper.selectUser("1");
System.out.println(user);
} finally {
session.close();
}
} //查询多条操作
@Test
public void queryUsers() {
SqlSession session = sqlSessionFactory.openSession(true);
try {
UserMapperI mapper = session.getMapper(UserMapperI.class);
List<User> userList = mapper.selectUsers("18");
System.out.println(userList.size());
} finally {
session.close();
}
} //更新操作
@Test
public void updateUser() {
SqlSession session = sqlSessionFactory.openSession(true);
try {
UserMapperI mapper = session.getMapper(UserMapperI.class);
User user = new User();
user.setId("1");
user.setAge("25");
int num = mapper.updateUser(user);
System.out.println(num);
} finally {
session.close();
}
} //删除操作
@Test
public void deleteUser() {
SqlSession session = sqlSessionFactory.openSession(true);
try {
UserMapperI mapper = session.getMapper(UserMapperI.class);
int num = mapper.deleteUser("1");
System.out.println(num);
} finally {
session.close();
}
}
}

最新文章

  1. JavaScript 函数声明,函数表达式,匿名函数,立即执行函数之区别
  2. NOSQL(一)--Redis
  3. 利用php制作简单的文本式留言板
  4. linux time命令参数--执行命令并计时
  5. C/C++编译预处理命令详解【转】
  6. CG&amp;Game资源(转)
  7. Android02-Activity01
  8. [Android学习笔记]Unable to execute dex Multiple dex files define:xxxx 问题
  9. php 编程效率(2)
  10. C返回函数指针的函数
  11. TCP/IP三次握手,四次断开
  12. [Swift]LeetCode877. 石子游戏 | Stone Game
  13. 青蛙的约会 POJ - 1061 (exgcd)
  14. HTTPS 之共享秘钥 公钥 及 私钥
  15. web前端知识总结
  16. [C#]创建表格(.xlsx)的典型方法
  17. ThinkPHP 小于5.0.24 远程代码执行高危漏洞 修复方案
  18. HTML5 标签语法变化和使用概念
  19. 高斯消元&amp;&amp;luogu3389
  20. Elasticsearch批量操作API用法介绍

热门文章

  1. Spring Boot+Socket实现与html页面的长连接,客户端给服务器端发消息,服务器给客户端轮询发送消息,附案例源码
  2. nginx访问日志分析,筛选时间大于1秒的请求
  3. Android个人中心UI
  4. 详解 MySQL 面试核心知识点
  5. redis实操-sentinel
  6. 字节数组X中存放着 0~F共16个十六进制数,请将这些数以十六进制形式显示在屏幕上。
  7. PHP decoct() 函数
  8. 原生JS 实现点击按钮创建元素
  9. Ploya定理学习笔记
  10. Linux的VMWare中Centos7磁盘分区管理 fdisk分区和制作文件系统格式化和开机自动挂载