<MyBatis>入门三 sqlMapper文件
增加
1.增删改在接口中的返回值
Integer、Long、Boolean、void 返回影响多少行 或 true | false
2.mapper 中 增删改没有返回值 (resultType或resultMap)
3.mysql支持自增主键,自增主键的值的获取,mybatis利用statement.getGeneratedKey();
userGeneratedKeys="true" :使用自增主键获取主键的策略
keyProperty:指定对应的主键属性,也就是mybatis获取到主键值以后,将这个值封装到JavaBean中哪个属性中
获取则是通过插入后,在查询一遍插入的对象,就可以拿到主键值
4.sqlSessionFactory.openSession()需要手动提交事务,或者采用sqlSessionFactory.openSession(true)
public interface EmployeeMapper {
Integer addEmp(Employee employee);
}
<!--
mysql支持自增主键,自增主键的值的获取,mybatis利用statement.getGeneratedKey();
userGeneratedKeys="true" :使用自增主键获取主键的策略
keyProperty:指定对应的主键属性,也就是mybatis获取到主键值以后,将这个值封装到JavaBean中哪个属性中
-->
<insert id="addEmp" useGeneratedKeys="true" keyProperty="id">
INSERT INTO tbl_employee(last_name, email, gender)
VALUES (#{name}, #{email}, #{gender})
</insert>
@Test
public void addEmp() throws IOException {
//读取配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
//获取sqlSession实例,能直接执行已经映射的sql语句
//不会自动提交,除非在openSession(true)
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行查询方法
try {
EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
Employee employee = new Employee(null,"麦克雷",'1',"mapleins@qq.com");
//i判断是否插入成功
Integer i = mapper.addEmp(employee);
System.out.println(i);
//可以获取插入后的主键值
System.out.println(employee.getId());
sqlSession.commit();
}finally {
//关闭sqlSession
sqlSession.close();
}
}
删除和修改
public interface EmployeeMapper {
Long updateEmp(Employee employee);
Boolean deleteEmpById(Integer id);
}
<update id="updateEmp">
UPDATE tbl_employee
SET last_name=#{name},
email=#{email},
gender=#{gender}
WHERE id = #{id}
</update> <delete id="deleteEmpById">
delete from tbl_employee where id = #{id}
</delete>
@Test
public void updateEmp() throws IOException {
//读取配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
//获取sqlSession实例,能直接执行已经映射的sql语句
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行查询方法
try {
EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
Employee employee = new Employee(17,"天使",'0',"mapleins@qq.com");
Long l = mapper.updateEmp(employee);
System.out.println(l);
sqlSession.commit();
}finally {
//关闭sqlSession
sqlSession.close();
}
} @Test
public void deleteEmpById() throws IOException {
//读取配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
//获取sqlSession实例,能直接执行已经映射的sql语句
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行查询方法
try {
EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
Boolean b = mapper.deleteEmpById(17);
System.out.println(b);
sqlSession.commit();
}finally {
//关闭sqlSession
sqlSession.close();
}
}
<MyBatis>入门三 sqlMapper文件的更多相关文章
- python入门三:文件操作
一.文件操作 1.文件对象:和c一样,要想对一个文件进行操作,需要获取该文件的对象 f = open("xxx") # 打开文件并获取文件对象 f.xxx # 对文件进行某些操作 ...
- Mybatis入门三
一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: <?xml version="1 ...
- mybatis入门(三):mybatis的基础特性
mybatis的知识点: 1.mybatis和hibernate本质区别和应用场景 hibernate:是一个标准的ORM框架(Ojbect relation mapper对象关系映射).入门门槛较高 ...
- mybatis 学习三 关键文件解析
1: mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYP ...
- mybatis入门系列三之类型转换器
mybatis入门系列三之类型转换器 类型转换器介绍 mybatis作为一个ORM框架,要求java中的对象与数据库中的表记录应该对应 因此java类名-数据库表名,java类属性名-数据库表字段名, ...
- Androlid入门之文件系统操作(三)文件读写
import java.io.*; import android.app.Activity; import android.os.Bundle; import android.view.Vi ...
- MyBatis入门学习(三)
在实际开发中,我们希望文件配置是分类配置存放,需要的时候引入即可.如果多文件的配置混合配置使用,那么对项目的后期维护将增加难度. 一.对于连接数据库的配置单独放在一个properties文件中 1.对 ...
- QT从入门到入土(三)——文件的读写操作
引言 文件的读写是很多应用程序具有的功能,甚至某些应用程序就是围绕着某一种格式文件的处 理而开发的,所以文件读写是应用程序开发的一个基本功能. Qt 提供了两种读写纯文本文件的基本方法: 用 QFi ...
- Mybatis系列(一):Mybatis入门
一.Mybatis是什么 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改 ...
随机推荐
- 蓝桥 ADV-230 算法提高 12-1三角形 【数学公式】
算法提高 12-1三角形 时间限制:1.0s 内存限制:256.0MB 问题描述 为二维空间中的点设计一个结构体,在此基础上为三角形设计一个结构体.分别设计独立的函数计算三角形的 ...
- YTU 2690: 用双重循环实现小九九
2690: 用双重循环实现小九九 时间限制: 1 Sec 内存限制: 128 MB 提交: 848 解决: 573 题目描述 小九九是我们小时候常背的的乘法算术法则,现在用双重循环来实现小九九 1 ...
- bzoj 1090 字符串折叠
题目大意: 折叠的定义如下: 1. 一个字符串可以看成它自身的折叠.2. X(S)是X(X>1)个S连接在一起的串的折叠.记作X(S)=SSSS…S(X个S). 3. 如果A=A’, B=B’, ...
- BZOJ_4800_[Ceoi2015]Ice Hockey World Championship_双指针
BZOJ_4800_[Ceoi2015]Ice Hockey World Championship_双指针 Description 有n个物品,m块钱,给定每个物品的价格,求买物品的方案数. Inpu ...
- 安装完Anaconda python 3.7,想使用python3.6方法
cmd使用命令: conda create -n py36 python=3.6 anaconda 安装好后,会有提示: To activate this environment, use:# > ...
- POJ2686 Traveling by Stagecoach 状态压缩DP
POJ2686 比较简单的 状态压缩DP 注意DP方程转移时,新的状态必然数值上小于当前状态,故最外层循环为状态从大到小即可. #include <cstdio> #include < ...
- 14. extjs中treepanel属性和方法
转自:http://www.cnblogs.com/connortang/p/4414907.html 1.Ext.tree.TreePanel 主要配置项: root:树的根节点. rootVisi ...
- 搞笑代码注释,佛祖保佑 永无BUG
佛祖保佑 永无BUG 上传图片即可生成字符画,效果还不错, https://www.fontke.com/tool/image2ascii/ 神注释大全 https://github.com/Blan ...
- bzoj 1827: [Usaco2010 Mar]gather 奶牛大集会【树形dp】
不能用read会TLE!!不能用read会TLE!!不能用read会TLE!! 一开始以为要维护每个点,线段树写了好长(还T了-- 首先dfs一遍,求出点1为集会地点的答案,处理处val[u]为以1为 ...
- [TJOI2012]桥
Description 有n个岛屿,m座桥,每座桥连通两座岛屿,桥上会有一些敌人,玩家只有消灭了桥上的敌人才能通过,与此同时桥上的敌人会对玩家造成一定伤害.而且会有一个大Boss镇守一座桥,以玩家目前 ...