Mybatis:CRUD操作
提示:
Mapper配置文件的命名空间为对应接口包名+接口名字,这个经常会忘记和搞错的!!
select标签
在接口中编写三个查询方法
//获取全部用户
List<User> selectUser(); //根据id查询用户
User getUserByID(int id); //根据一个对象查询
User getUserByUser(User user);
标签信息
<select id="" parameterType="" resultType="" resultMap="">
-- sql语句 (#{name}--这个格式能获取方法参数与sql语句整合)
</select>
id:对应接口对应方法名字
parameterType:为参数类型
resultType:查询结果返回类型
resultMap:手动映射查询结果(之后随笔会介绍)
UserMapper.xml中select语句:
<select id="selectUser" resultType="com.ttt.pojo.User" >
select * from mybatis.user
</select> <select id="getUserByID" parameterType="int" resultType="com.ttt.pojo.User">
select * from mybatis.user where id=#{id}
</select> <select id="getUserByUser" parameterType="com.ttt.pojo.User" resultType="com.ttt.pojo.User">
select * from mybatis.user where name=#{name}
</select>
1、若返回结果为一个集合,那么返回类型就填返回集合里对象类型。
2、在接口方法的参数前加 @Param属性 ,Sql语句编写的时候,直接取@Param中设置的值即可,不需要单独设置参数类型
例如:
//通过密码和名字查询用户
User selectUserByNP(@Param("username") String username,@Param("pwd") String pwd);
/*
<select id="selectUserByNP" resultType="com.ttt.pojo.User">
select * from user where name = #{username} and pwd = #{pwd}
</select>
*/
测试语句:
@Test
public void test01(){
SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> users1 = userMapper.selectUser();
User user2 = userMapper.getUserByID(1);
User user3 = userMapper.getUserByUser(new User(1, "黑子", "123456")); System.out.println("selectUser方法结果:");
for (User user : users1) {
System.out.println(user);
} System.out.println("getUserByID方法结果:");
System.out.println(user2); System.out.println("getUserByUser方法结果:");
System.out.println(user3); sqlSession.close();
}
test
insert标签:
1、在接口添加方法
//insert一个用户
int addUser(User user);
2、UserMapper.xml中insert语句
<insert id="addUser" parameterType="com.ttt.pojo.User">
insert into user(id, name, pwd) values (#{id}, #{name}, #{pwd})
</insert>
3、测试
@Test
public void test04(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.addUser(new User(4,"demo", "1234" ));
sqlSession.commit(); sqlSession.close();
}
test
update标签
1、接口添加方法
//修改用户
int updateUser(User user);
2、UserMapper.xml中update语句
<update id="updateUser" parameterType="com.ttt.pojo.User">
update user set name = #{name}, pwd=#{pwd} where id=#{id} </update>
注:update语句没有返回标签
3、测试
@Test
public void test05(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.updateUser(new User(4, "绿员君", "123456"));
sqlSession.commit(); sqlSession.close();
}
test
delete标签
1、接口中添加方法
//删除一个用户
int deleteUser(int id);
2、UserMapper.xml中delete语句
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id=#{id};
</delete>
3、测试
@Test
public void test06(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.deleteUser(4);
sqlSession.commit(); sqlSession.close();
}
test
传参技巧--万能map
- 在接口方法中,参数直接传递Map
User selectUserByNP2(Map<String,Object> map);
编写sql语句的时候,需要传递参数类型,参数类型为map
<select id="selectUserByNP2" parameterType="map" resultType="com.ttt.pojo.User">
select * from user where name = #{username} and pwd = #{pwd}
</select>
在使用方法的时候,Map的 key 为 sql中取的值即可,没有顺序要求!
Map<String, Object> map = new HashMap<String, Object>();
map.put("username","小明");
map.put("pwd","123456");
User user = mapper.selectUserByNP2(map);
如果参数太多,我们可以使用map实现,而参数太少了,就直接传递参数即可。
小结:
- 所有的增删改操作都需要提交事务!
- 接口所有的普通参数,尽量都写上@Param参数,尤其是多个参数时,必须写上!
- 有时候根据业务的需求,可以考虑使用map传递参数!
- 为了规范操作,在SQL的配置文件中,我们尽量将Parameter参数和resultType都写上!
Mybatis:CRUD操作的更多相关文章
- MyBatis crud操作
Test2.java package com.mycom.mybatis_1.crud; import java.util.List; import org.apache.ibatis.session ...
- 使用MyBatis对表执行CRUD操作
一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...
- MyBatis入门学习教程-使用MyBatis对表执行CRUD操作
上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0&q ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- mybatis(二)执行CRUD操作的两种方式配置和注解
一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...
- MyBatis学习总结_02_使用MyBatis对表执行CRUD操作
一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0&q ...
- 【转】MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
[转]MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据, ...
- Mybatis的学习总结二:使用Mybatis对表进行CRUD操作【参考】
一.使用Mybatis对表进行CRUD操作------基于XML的实现 1.定义SQL的映射文件 2.在conf.xml中进行注册. 2.创建测试类 [具体过程参考:Mybatis的学习总结一] 二. ...
随机推荐
- Java 学习笔记之 Suspend和Resume
Suspend和Resume: Suspend和Resume使用方法: 以下例子证明了线程确实被暂停了,而且还可以恢复成运行状态. public class SuspendResumeThread e ...
- Java的一些基础知识深入
1.浅析Java中的final关键字: 2.Java中的static关键字解析: 3.探秘Java中String.StringBuilder以及StringBuffer: 4.Java内部类详解: 5 ...
- ssrf漏洞学习(PHP)
自己最近原本是想深入的学习一下关于xss.csrf的东西的,可是感觉这些东西需要有很好的js的基础来进行学习..还有感觉自己感觉也差不多该要学习内网渗透了..正好ssrf在内网这一块也是比较有用的.于 ...
- day 19作业
目录 今日作业: 今日作业: 1.什么是对象?什么是类? 答:对象是特征与技能的集合体,类是一系列对象相同的特征与技能的结合体 2.绑定方法的有什么特点 答:由对象来调用称之为对象的绑定方法,不同的对 ...
- 【Java基础】Java开发过程中的常用工具类库
目录 Java开发过程中的常用工具类库 1. Apache Commons类库 2. Guava类库 3. Spring中的常用工具类 4. 其他工具 参考 Java开发过程中的常用工具类库 1. A ...
- python编程基础之六
运算符和表达式 +,-,*,/, 加减乘除 %, 模运算 **, 幂运算 // 整除 运算优先级方面:** >正负号(+,-)>//,%>*,/>+,- 模运算有一 ...
- python程序编译成exe文件
最近越来越喜欢使用python写工具.使用的时候,发现程序内部成员python安装目录常常不同,如果用bat双击执行,常常需要修改从svn上down下来的bat文件中python.exe的路径.而给策 ...
- Python3实用编程技巧进阶 ☝☝☝
Python3实用编程技巧进阶 ☝☝☝ 1.1.如何在列表中根据条件筛选数据 # 1.1.如何在列表中根据条件筛选数据 data = [-1, 2, 3, -4, 5] #筛选出data列表中大于等 ...
- 通过机器学习的线性回归算法预测股票走势(用Python实现)
在本人的新书里,将通过股票案例讲述Python知识点,让大家在学习Python的同时还能掌握相关的股票知识,所谓一举两得.这里给出以线性回归算法预测股票的案例,以此讲述通过Python的sklearn ...
- 渗透测试-基于白名单执行payload--Msiexec
复现亮神课程 基于白名单执行payload--Msiexec 0x01 关于msiexec Msiexec 是 Windows Installer 的一部分.用于安装 Windows Install ...