1、实现需求

添加用户

更新用户

删除用户

2、添加用户

  (1)映射文件User.xml(Mapper)中,配置添加用户的Statement

<!-- 添加用户:
parameterType:指定输入参数类型是pojo(包括用户的信息)
#{}中指定pojo的属性名,接收到pojo对象的属性值, mybatis通过 OGNL 获取对象的属性值-->
<insert id="insertUser" parameterType="com.bjxb.mybatis.pojo.User">
insert into user(username, birthday, sex, address) value(#{username},#{birthday},#{sex},#{address})
</insert>

  

  (2)程序代码

// 添加用户信息
@Test
public void insertUserTest() {
SqlSession sqlSession = null; try {
// mybatis配置文件
String resource = "config/SqlMapConfig.xml";
// 得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource); // 创建会话工厂,传入mybatis的配置文件信息
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 通过工厂的到SQLSession
sqlSession = sqlSessionFactory.openSession(); // 插入用户对象
User user = new User();
user.setUsername("zxy");
user.setBirthday(new Date());
user.setSex("0");
user.setAddress("山西太原");
sqlSession.insert("test.insertUser", user); // 提交事务
sqlSession.commit();
}
catch (Exception e) {
// TODO: handle exception
} finally {
// 释放资源
sqlSession.close();
}
}

3、自增主键返回

  mysql 自增主键,执行 insert 提交之前自动生成一个自增主键。

  通过 mysql 函数获取到刚插入记录的自增主键:LAST_INSERT_ID()

  是在 insert 之后调用

  修改 insertUser 定义:

<!-- 添加用户:
parameterType:指定输入参数类型是pojo(包括用户的信息)
#{}中指定pojo的属性名,接收到pojo对象的属性值, mybatis通过 OGNL 获取对象的属性值-->
<insert id="insertUser" parameterType="com.bjxb.mybatis.pojo.User">
<!--
将插入数据的主键返回,返回到user对象中
SELECT LAST_INSERT_ID():得到刚insert进去的记录的主键值,只适用于自增主键
keyProperty:将查询到主键值设置到parameterType指定的对象的哪个属性
order:SELECT LAST_INSERT_ID()执行顺序,相对于insert语句来说它的执行顺序
      resultType:指定 SELECT LAST_INSERT_ID()的结果类型
-->
<selectKey keyProperty="id" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
insert into user(id, username, birthday, sex, address) value(#{id},#{username},#{birthday},#{sex},#{address})
</insert>

4、非自增主键返回(使用UUID())

  使用 mysql 的 uuid()函数生成主键,需要修改表中 id 的字段为 string,长度设置成 35 位

  修改 insertUser 定义:

<insert id="insertUser" parameterType="com.bjxb.mybatis.pojo.User">
<!--
使用mysql的 uuid()生成主键
执行过程:
首先通过UUID(),将主键设置到user对象的id属性中
其次在inset执行时,从user对象中,取出id属性值
-->
<selectKey keyProperty="id"order="BEFORE" resultType="java.lang.String">
SELECT UUID()
</selectKey>
insert into user(id, username, birthday, sex, address) value(#{id}, #{username},#{birthday},#{sex},#{address})
</insert>

5、通过 oracle 的序列生成主键:

<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
SELECT 序列名.nextval()
</selectKey>
insert into user(id, username, birthday, sex, address) value(#{id}, #{username},#{birthday},#{sex},#{address})

6、删除用户

  (1)映射文件

<!-- 删除用户
根据id删除用户,需要输入id值
-->
<delete id="deleteUser" parameterType="java.lang.Integer">
delete from user where id = #{id}
</delete>

  

  (2)代码

// 根据id删除用户信息
@Test
public void deleteUserTest() {
SqlSession sqlSession = null; try {
// mybatis配置文件
String resource = "config/SqlMapConfig.xml";
// 得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource); // 创建会话工厂,传入mybatis的配置文件信息
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 通过工厂的到SQLSession
sqlSession = sqlSessionFactory.openSession(); // 传入id删除用户
sqlSession.delete("test.deleteUser", 10); // 提交事务
sqlSession.commit();
} catch (Exception e) {
// TODO: handle exception
} finally {
// 关闭会话,释放资源
sqlSession.close();
}
}

7、更新用户

  (1)映射文件

<!-- 更新用户
分析:
需要传入用户的id
需要传入用户的更新信息
parameterType指定user对象,包括id和更新信息,注意: id必须存在
#{id}: 从输入user对象中获取id属性值
-->
<update id="updateUser" parameterType="com.bjxb.mybatis.pojo.User">
update user set username=#{username}, birthday=#{birthday}, sex=#{sex}, address=#{address} where id = #{id}
</update>

  (2)代码

// 更新用户信息
@Test
public void updateUserTest() {
SqlSession sqlSession = null; try {
// mybatis配置文件
String resource = "config/SqlMapConfig.xml";
// 得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource); // 创建会话工厂,传入mybatis的配置文件信息
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 通过工厂的到SQLSession
sqlSession = sqlSessionFactory.openSession(); // 更新用户信息
User user = new User();
// 必须设置id
user.setId(11);
user.setUsername("xy");
user.setBirthday(new Date());
user.setSex("0");
user.setAddress("山西运城");
sqlSession.insert("test.updateUser", user); // 提交事务
sqlSession.commit();
} catch (Exception e) {
// TODO: handle exception
} finally {
// 释放资源
sqlSession.close();
}
}

Mybatis入门程序(二)的更多相关文章

  1. MyBatis入门程序(基于XML配置)

    创建一个简单的MyBatis入门程序,实现对学生信息的增删改查功能(基于XML配置) 一.新建一个Java工程,导入MyBatis核心jar包.日志相关的jar包以及连接Oracle数据库所需驱动包, ...

  2. Mybatis学习——Mybatis入门程序

    MyBatis入门程序 一.查询用户 1.使用客户编号查询用户 (1).创建一个数据表 USE spring; #创建一个名为t_customer的表 CREATE TABLE t_customer( ...

  3. Mybatis入门程序

    作为一个java的学习者,我相信JDBC是大家最早接触也是入门级别的数据库连接方式,所以我们先来回忆一下JDBC作为一种用于执行SQL语句的Java API是如何工作的.下面的一段代码就是最基本的JD ...

  4. mybatis入门系列二之输入与输出参数

    mybatis入门系列二之详解输入与输出参数   基础知识   mybatis规定mapp.xml中每一个SQL语句形式上只能有一个@parameterType和一个@resultType 1. 返回 ...

  5. mybatis入门基础(二)----原始dao的开发和mapper代理开发

    承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...

  6. MyBatis入门(二)---一对一,一对多

    一.创建数据库表 1.1.创建数据表同时插入数据 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.6.27-log : Database - mybati ...

  7. MyBatis入门程序(1)

    一.入门程序: 1.mybatis的配置文件SqlMapConfig.xml 配置mybatis的运行环境,数据源.事务等. <?xml version="1.0" enco ...

  8. Mybatis入门程序(一)

    1.入门程序实现需求 根据用户id查询一个用户信息 根据用户名称模糊查询用户信息列表 添加用户(二) 更新用户(二) 删除用户(二) 2.引入Mybatis所需 jar 包(Maven工程) < ...

  9. mybatis入门介绍二

    相信看过我的上一篇博客的同学都已经对mybatis有一个初步的认识了.这篇博客主要是对mybatis的mapper代理做一下简单的介绍,希望能够帮助大家共同学习. 我的上一篇博客:mybatis入门介 ...

  10. Mybatis入门程序编写

    执行原理 入门程序编写 1.pom.xml 文件 <dependencies> <dependency> <groupId>mysql</groupId> ...

随机推荐

  1. 生产环境想要对某个Pod排错、数据恢复、故障复盘有什么办法?

    生产环境想要对某个Pod排错.数据恢复.故障复盘有什么办法? k8s考点灵魂拷问9连击之5 考点之简单描述一下k8s副本集ReplicaSet有什么作用? 考点之为什么ReplicaSet将取代Rep ...

  2. URLEncoder和URLDecoder转码

    目前看是为了解决网络传输的中文乱码问题 import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import  ...

  3. 在shell脚本里使用sftp批量传送文件

    转至:https://blog.csdn.net/istronger/article/details/52141530?utm_medium=distribute.pc_relevant.none-t ...

  4. 教程1--安装Git软件

    在https://git-scm.com/下载git for windows,双击安装即可. (1)单击Next (2)选择安装目录 (3)勾选创建桌面快捷方式.Git Bash.Git GUi.已经 ...

  5. maven通用镜像设置

    <mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorO ...

  6. sprintf的用法总结

    大概知道sprintf的用法,今天在CSDN上看到一篇关于sprintf比较好的总结,现在抄下来,emmmmmmm....... srpintf()函数的功能非常强大:效率比一些字符串操作函数要高:而 ...

  7. MM32F0140 UART1中断接收和UART1中断发送

    目录: 1.MM32F0140简介 2.初始化MM32F0140 UART1和NVIC中断 3.编写MM32F0140 UART1使能中断发送函数 4.编写MM32F0140 UART1中断接收和中断 ...

  8. tp5 全选,全不选 ,ajax批量删除

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. SSH 免密码认证登陆

    检查是否已安装ssh rpm -qa |grep ssh 如未安装可以重新安装 yum install -y openssl openssh-server 修改配置 vim  /etc/ssh/ssh ...

  10. DataFrame计算corr()函数计算相关系数时,出现返回值为空或NaN的情况+np.log1p()