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注入 不安全


上一篇:Mybatis--Lombok的使用(不建议使用)
下一篇:MySQL--运算符

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月23日 13时12分58秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

这些考研阅卷潜规则你知道几个? 2019-03-03
【考研英语】考研英语小作文万能模板(致歉信) 2019-03-03
【数据结构与算法】队列 2019-03-03
中国最委屈的十所大学 2019-03-03
【考研经验】2018四跨吉林大学计算机初试复试经验贴(67+72+99+141=379分) 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