1.update修改

uodate修改也可以使用之前的机制在配置文件中直接编写sql

但是update语句的set字句中是根据传入的值决定的,

此时可以通过Mybatis提供的标签实现判断动态拼接update语句:

    <!-- update修改 -->
<update id="updateOne">
update user
<set>
<if test="name != null">name = #{name},</if>
<if test="age != 0">age = #{age},</if>
</set>
where id = #{id}
</update>

测试类:

// 根据配置文件创建sqlSessionFactory
private SqlSessionFactory factory = null;
@Before
public void before() throws Exception{
//1.读取MyBatis核心配置文件
InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
//2.根据配置文件创建sqlSessionFactory
factory = new SqlSessionFactoryBuilder().build(in);
} /**
* update操作
*/
@Test
public void test07(){
User user = new User();
user.setId(3);
user.setName("sss");
user.setAge(12);
// 1.创建sqlSession
SqlSession session = factory.openSession();
// 2.执行操作
session.update("cn.tedu.mybatis.beans.UserMapper.updateOne",user);
// 3.提交事务
session.commit();
}

2.select查询

select查询也可以使用之前的机制在配置文件中直接编写sql

但是select语句的where字句中拼接哪些查询字段是根据传入的值决定的

此时可以通过MyBatis提供的标签实现判断,动态拼接select语句:

    <!-- select查询 -->
<select id="queryMany" resultType="cn.tedu.mybatis.beans.User">
select * from user
<where>
<if test="id != 0">id = #{id}</if>
<if test="name != null">and name = #{name}</if>
<if test="age != 0">and age = #{age}</if>
</where>
</select>

测试类:

    // 根据配置文件创建sqlSessionFactory
private SqlSessionFactory factory = null;
@Before
public void before() throws Exception{
//1.读取MyBatis核心配置文件
InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
//2.根据配置文件创建sqlSessionFactory
factory = new SqlSessionFactoryBuilder().build(in);
} /**
* select操作
*/
@Test
public void test08(){
User user = new User();
user.setId(3);
user.setName("sss");
user.setAge(12);
// 1.创建sqlSession
SqlSession session = factory.openSession();
// 2.执行操作
User userx = session.selectOne("cn.tedu.mybatis.beans.UserMapper.queryMany",user);
// 3.遍历结果
System.out.println(userx);
} // 根据配置文件创建sqlSessionFactory
private SqlSessionFactory factory = null;
@Before
public void before() throws Exception{
//1.读取MyBatis核心配置文件
InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
//2.根据配置文件创建sqlSessionFactory
factory = new SqlSessionFactoryBuilder().build(in);
} /**
* select操作
*/
@Test
public void test08(){
User user = new User();
user.setId(3);
user.setName("sss");
user.setAge(12);
// 1.创建sqlSession
SqlSession session = factory.openSession();
// 2.执行操作
User userx = session.selectOne("cn.tedu.mybatis.beans.UserMapper.queryMany",user);
// 3.遍历结果
System.out.println(userx);
}

3.insert操作

insert插入也可以使用之前的机制在配置文件中直接编写sql

但是insert语句的参数和值的列表拼接哪些字段是根据差u纳入的值决定的

此时可以通过MyBatis提供的标签实现判断,动态拼接insert语句:

    <!-- insert操作 -->
<insert id="insertOne">
insert into user
<trim prefix="(" suffix=")" suffixOverrides=",">
id,
<if test="name != null">name,</if>
<if test="age != 0">age,</if>
</trim>
values
<trim prefix="(" suffix=")" suffixOverrides=",">
id,
<if test="name != null">#{name},</if>
<if test="age !=0">#{age},</if>
</trim>
<!-- insert into user (id,name,age) values (null,#{name},#{age}) -->
</insert>

trim:去掉字符串两端的多余的空格

测试类:

    // 根据配置文件创建sqlSessionFactory
private SqlSessionFactory factory = null;
@Before
public void before() throws Exception{
//1.读取MyBatis核心配置文件
InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
//2.根据配置文件创建sqlSessionFactory
factory = new SqlSessionFactoryBuilder().build(in);
} /**
* insert操作
*/
@Test
public void test09(){
User user = new User();
user.setName("hhh");
user.setAge(33);
// 1.创建SqlSession
SqlSession session = factory.openSession();
// 2.执行操作
session.insert("cn.tedu.mybatis.beans.UserMapper.insertOne",user);
// 3.提交事务
session.commit();
}

4.delet操作

delete删除也可以使用之前的机制在配置文件中直接编写sql

但是delete语句的删除条件、拼接哪些字段,是根据传入的值决定的

此时可以通过MyBatis提供的标签实现判断,动态拼接delete语句:

    <!-- delete 操作 -->
<delete id="deleteOne">
delete from user
<where>
<if test="id != 0">id = #{id}</if>
<if test="name != null">and name = #{name}</if>
<if test="age != 0">and age = #{age}</if>
</where>
</delete>
    <!-- delete 操作2 -->
<delete id="deleteOne2">
delete from user where id in
<foreach collection="list" open="(" close=")"
separator="," item="id">
#{id}
</foreach>
</delete>

测试类:

    // 根据配置文件创建sqlSessionFactory
private SqlSessionFactory factory = null;
@Before
public void before() throws Exception{
//1.读取MyBatis核心配置文件
InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
//2.根据配置文件创建sqlSessionFactory
factory = new SqlSessionFactoryBuilder().build(in);
} /**
* delete操作
*/
@Test
public void test10(){
User user = new User();
user.setId(8);
// user.setName("cjj");
user.setAge(24);
// 1.创建SqlSession
SqlSession session = factory.openSession();
// 2.执行操作
session.insert("cn.tedu.mybatis.beans.UserMapper.deleteOne",user);
// 3.提交事务
session.commit();
} /**
* delete操作2
*/
@Test
public void test11(){
// 0.准备数据
List<Integer> list = new ArrayList<Integer>();
list.add(3);
list.add(6);
list.add(10);
// 1.创建SqlSession
SqlSession session = factory.openSession();
// 2.执行操作
session.insert("cn.tedu.mybatis.beans.UserMapper.deleteOne2",list);
// 3.提交事务
session.commit();
}

MyBatis 对数据库进行CRUD操作的更多相关文章

  1. mybatis升级案例之CRUD操作

    mybatis升级案例之CRUD操作 一.准备工作 1.新建maven工程,和入门案例一样 主要步骤如下,可参考mybatis入门实例 a.配置pom.xml文件 b.新建实例类User.DAO接口类 ...

  2. 数据库的CRUD操作

    一:数据库的CRUD操作,C是指create新增,R是指retrieve检索,U是指update更改,D是指delete删除 SQL语句分为3类: 1.DDL指数据定义语言如:create,drop, ...

  3. Mybatis框架 使用接口Mapper实现数据库的crud操作

    Mybatis的Mapper接口方式实现简单crud操作: 1.创建实体类 与数据库对应 我的实体类是<Student>   package com.hxzy.mybatis.pojo; ...

  4. MyBatis+Spring实现基本CRUD操作

    一.MyBaits介绍   MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的X ...

  5. SSM框架之Mybatis(2)CRUD操作

    Mybatis(2)CRUD 1.基于代理Dao实现CRUD操作 使用要求: 1.持久层接口(src\main\java\dao\IUserDao.java)和持久层接口的映射配置(src\main\ ...

  6. Spring Boot使用Spring Data Jpa对MySQL数据库进行CRUD操作

    只需两步!Eclipse+Maven快速构建第一个Spring Boot项目 构建了第一个Spring Boot项目. Spring Boot连接MySQL数据库 连接了MySQL数据库. 本文在之前 ...

  7. 4月18 数据库的CRUD操作

    php主要是实现B/S Brower Server;此外还有C/S:Client Server暂时不考虑: LAMP: Linux系统 A阿帕奇服务器 Mysql数据库 Php语言,而现在学的是在wi ...

  8. mybatis框架入门程序:演示通过mybatis实现数据库的添加操作

    1.mybatis的基本配置准备在我的这篇博文中可以找到:https://www.cnblogs.com/wyhluckdog/p/10149480.html 2. 映射文件: 在User.xml中添 ...

  9. mybatis框架入门程序:演示通过mybatis实现数据库的查询操作

    我们现在工程基于的数据库见“https://www.cnblogs.com/wyhluckdog/p/10147754.html”这篇博文. 1.mybatis下载 mybatis的代码由githua ...

随机推荐

  1. java-继承的注意事项

    1.子类只能继承父类所有非私有的成员(成员方法和成员变量). 2.子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法. 3.不要为了部分功能而去继承.

  2. 《DSP using MATLAB》Problem 5.4

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  3. hibernate--DetachedCriteria(离线条件查询)

    一.叙述 离线条件查询的好处,可以在非dao层封装查询参数,封装完成后,将对象传递到dao层,关联到session后,再去查询数据,这样做dao层可以极大的简化代码.下面通过一个小案例,一起来感受一下 ...

  4. Go Example--map

    package main import "fmt" func main() { //初始化map make(map[类型][类型]) m:= make(map[string]int ...

  5. linux日志管理

    //有关当前登录用户的信息记录在文件utmp中 //登录进入和退出纪录在文件wtmp中 [root@bogon python]# who //who命令查询utmp文件并报告当前登录的每个用户 /va ...

  6. python基础(七)——网络编程

    服务端 我们使用 socket 模块的 socket 函数来创建一个 socket 对象.socket 对象可以通过调用其他函数来设置一个 socket 服务. 现在我们可以通过调用 bind(hos ...

  7. tailor+ skipper 实现micro-frontends 简单试用

    tailor 在Mosaic 框架中扮演fragment 模版layout的处理,后端fragment可以用任何服务编写 tailor 主要就是进行layout的处理.tailor的是类似facebo ...

  8. JSON字符串互相转换的三种方式和性能比较

    C# 对象与JSON字符串互相转换的三种方式 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 关于内存对象和JSON字符串的相互转换, ...

  9. oracle参数文件与启动过程

    oracle随系统启动而启动 cs65-64桌面版orcle-11.2.0.4 启动监听器,后台进程,OEM. 注意: 如果只做一和三,只能启动后台进程,监听器不启动,如果只做二和三,只能启动监听器, ...

  10. [转]JDK自带工具之问题排查场景示例

    最近看到了大量关于java性能调优.故障排查的文章,自己也写了一篇Java调优经验谈.接着此篇文章,其实一直打算写写一些常用调优工具以及它们的惯常用法的.后来在http://java-performa ...