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 poi解析excel报错处理

    org.apache.xmlbeans.SchemaTypeLoaderException: XML-BEANS compiled schema: Incompatible minor version ...

  2. 无用之学matplotlib,numpy,pandas

    一.matplotlib学习 matplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建 例子1: # coding=utf- from ...

  3. CentOS7安装备忘

    ======1 下载CentOS镜像文件:https://www.centos.org/download/http://isoredirect.centos.org/centos/7/isos/x86 ...

  4. mongodb副本集加分片集群安全认证使用账号密码登录

    mongodb副本集加分片集群搭建网上资料有很多.粘贴一个写的比较好的.副本集加分片搭建 对于搭建好的mongodb副本集加分片集群,为了安全,启动安全认证,使用账号密码登录. 默认的mongodb是 ...

  5. mariadb增量备份

    何为增量备份,简单理解就是使用日志记录每天数据库的操作情况,只需要每天把这个日志里的数据库操作还原到数据库中,从而避免每天都进行完全备份,这种情况下,每周进行一次完全备份即可 首先我们需要配置以下ma ...

  6. Airtest Project的探索和使用

    Airtest使用参考博文: https://testerhome.com/topics/12391 1. 安装Python 3 2. 安装pip: 安装方法参考另外一篇随笔 pip3部署: C:\U ...

  7. 关注 硬件 发展, 转载一篇介绍 VHDL 的文章

    <VHDL学习笔记> https://www.eefocus.com/hrbeulvcaho/blog/12-11/289109_978e2.html VHDL 和  “可编程逻辑阵列”  ...

  8. ML(附录3)——过拟合与欠拟合

    过拟合与欠拟合 我们希望机器学习得到好的模型,该模型能够从训练样本中找到一个能够适应潜在样本的普遍规律.然而,如果机器学习学的“太好”了,以至把样本的自身特点当作潜在样本的一般特性,这就使得模型的泛化 ...

  9. mysql之 Percona XtraDB Cluster集群线程模型

    Percona XtraDB集群创建一组线程来为其操作提供服务,这些线程与现有的MySQL线程无关.有三个主要线程组: 一.Applier线程 Applier线程应用从其他节点接收的写入集.写消息直接 ...

  10. mysql之 表空间传输

    说明:MySQL(5.6.6及以上),innodb_file_per_table开启. 1.1. 操作步骤: 0. 目标服务器创建相同表结构1. 目的服务器: ALTER TABLE t DISCAR ...