
Mybatis--使用注解去实现CRUD(增删改查)&Mybatis防止Sql注入
发布日期:2021-05-06 01:29:17
浏览次数:30
分类:技术文章
本文共 3734 字,大约阅读时间需要 12 分钟。
1. Mybatis–使用注解去实现CRUD(增删改查)
不要默认开启事务提交尽量,万一你的代码有问题,提交上去后果很严重!!!
MybatisUtils.java
// 这里设置为true是默认开启事务提交 return sqlSessionFactory.openSession(true);
package com.tian.util;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.InputStream;public class MybatisUtils { // SqlSessionFactory-->session private static SqlSessionFactory sqlSessionFactory; static { try { // 第一步: 使用Mybatis获取SqlSessionFactory对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。 // SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。 public static SqlSession getSqlSession() { // 这里设置为true是默认开启事务提交 return sqlSessionFactory.openSession(true); }}
1.1 增加
UserMapper.java
// 添加用户 @Insert("insert into user(id,name,pwd) values (#{id},#{name},#{pwd});") void addUser(User user);
UserMapperTest.java
@Test public void test02() { // 获取SqlSession对象 try (SqlSession sqlSession = MybatisUtils.getSqlSession()) { // 执行sql// 方式1: getMapper UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user = new User(5, "旭哥", "111"); mapper.addUser(user); } catch (Exception e) { e.printStackTrace(); } }
运行结果

1.2 删除
UserMapper.java
// 删除用户 @Delete("delete from user where id = #{id}") void deleteUser(@Param("id") int id);
UserMapperTest.java
@Test public void test04() { // 获取SqlSession对象 try (SqlSession sqlSession = MybatisUtils.getSqlSession()) { // 执行sql// 方式1: getMapper UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 删除id为1的user mapper.deleteUser(1); } catch (Exception e) { e.printStackTrace(); } }
1.3 修改
UserMapper.java
// 修改用户 @Update("update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id}") void uppdateUser(User user);
UserMapperTest.java
@Test public void test03() { // 获取SqlSession对象 try (SqlSession sqlSession = MybatisUtils.getSqlSession()) { // 执行sql// 方式1: getMapper UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.uppdateUser(new User(5, "余余", "11111")); } catch (Exception e) { e.printStackTrace(); } }
运行结果

1.4 查询
方法存在多个参数,所有的参数前面必须加上@Param("id")注解
UserMapper.java
//方法存在多个参数,所有的参数前面必须加上@Param("id")注解 @Select("select * from `mybatis`.`user` where id=#{id} and name=#{name};") User getUserByNameAndId(@Param("id") int id, @Param("name") String name);
UserMapperTest.java
@Test public void test() { // 获取SqlSession对象 try (SqlSession sqlSession = MybatisUtils.getSqlSession()) { // 执行sql// 方式1: getMapper UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 查询 id为1 name="无余"的user User user = mapper.getUserByNameAndId(1, "无余"); System.out.println(user); } catch (Exception e) { e.printStackTrace(); } }
运行结果:

1.5 关于@Param( )注解
基本类型的参数或者String类型,需要加上
引用类型不需要加
如果只有一个基本类型的话,可以忽略,但是建议大家都加上
我们在SQL中引用的就是我们这里的@Param()中设定的属性名
#{} 可以防止SQL注入 安全
和 $ {} 不可以防止SQL注入 不安全
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月23日 13时12分58秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
这些考研阅卷潜规则你知道几个?
2019-03-03
【考研英语】考研英语小作文万能模板(致歉信)
2019-03-03
【数据结构与算法】队列
2019-03-03
中国最委屈的十所大学
2019-03-03
注意绕道!考研路上几大隐形致命杀手!
2019-03-03
【20考研】英语第一轮复习要做的二三事
2019-03-03
【研究生】PyTorch 1.0稳定版正式发布,并向开发者提供免费AI课程
2019-03-03
平均分392分!某985计算机专硕复试线暴涨!
2019-03-03
为何二战考生成功率远远大于应届?
2019-03-03
计算机专业【本科生】毕业还不如【专科生】?
2019-03-03
考研408联盟新添一所985!某知名大学专业课改用408!
2019-03-03
最有钱的大学是哪个?教育部直属高校公布2018年决算
2019-03-03
408的逆袭!武汉大学所有计算机/软件专业都改为408!
2019-03-03
408又多一所学校!广东某大学专业课改为408!
2019-03-03
【报名问题】考研现场确认时发现报考点选错了怎么办?
2019-03-03
100000+人体验过后都说:这TM绝对是最变态的英语学习方法……
2019-03-03
广东省将新增一所“中科大”,办学规模初定1万人!
2019-03-03
提醒 | 未下载打印准考证的考生,不能参加2020年考研初试
2019-03-03
【调剂】2020年中科院上海光机所接收报考硕士研究生调剂生的通知
2019-03-03