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. linux 执行脚本

    crontab -e 直接编辑定时脚本 保存后,在/var/spool/cron/下自动生成一个以用户名命名的脚本文件.

  2. linux 的IP配置和网络问题的排查

    1.6  IP的配制, 首先要会用: ifconfig  和加相关参数如: ifconfig -a, 来查看,自己的电脑网络配制. 再次就必需要知道,默认IP配制文件的地方: cd /etc/sysc ...

  3. (20)模型层 -ORM之msql 基于双下划线的跨表查询(一对一,一对多,多对多)

    基于对象的跨表查询是子查询 基于双下划线的查询是连表查询 PS:基于双下划线的跨表查询 正向按字段,反向按表名小写 一对一 需求:查询lqz这个人的地址# 正向查询ret = models.Autho ...

  4. MySQL--Semi-join(半连接)优化策略

    Semi-join(半连接)半连接主要场景:检查一个结果集(外表)的记录是否在另外一个结果集(字表)中存在匹配记录,半连接仅关注”子表是否存在匹配记录”,而并不考虑”子表存在多少条匹配记录”,半连接的 ...

  5. codeblock设置快捷键

    第一步: 第二步: 第三步:  格式化代码设置: 在代码框里点右键,按Format use Astyle就会自动代码格式化了 但是它默认的风格是大括号另起一行,很不习惯,实际上是可以改的 1.Sett ...

  6. 两个简单的API限流实现方案

    1, Ngnix限流 Nginx在架构中起到请求转发与负载均衡器的作用.外部req首先到Nginx监听的80端口,然后Nginx将req交给到监听8080端口的APP服务器处理.处理结果再经由Ngin ...

  7. ElasticSearch:Lucene和ElasticSearch

    Lucene的概念: 关于索引 索引(index)和搜索(搜索),在lucene以及es里面索引是一个动作,即插入动作,包括创建索引以及为索引添加文档:所有则是针对索引(添加)的文档按照评分规则进行查 ...

  8. Scrapy 爬取BOSS直聘关于Python招聘岗位

    年前的时候想看下招聘Python的岗位有多少,当时考虑目前比较流行的招聘网站就属于boss直聘,所以使用Scrapy来爬取下boss直聘的Python岗位. 1.首先我们创建一个Scrapy 工程 s ...

  9. PyCharm 连接Git及使用

    一.PyCharm配置Git的环境 1.PyCharm 连接Git首先需要本机安装Git软件; 2.PyCharm 版本控制中设置Git的执行路径,file->Setting->Versi ...

  10. Linux 下Tomcat单机多应用

    修改/etc/profile 下,增加如下两个tomcat的配置.apache-tomcat-8.0.50为第一个tomcat, apache-tomcat-8.0.50_2为第二个tomcat ex ...