后端框架的学习----mybatis框架(7、使用注解开发)
7、使用注解开发
1、注解在接口上实现
/**
* 查询用户
*/
@Select("select * from user")
public List<User> getUsers();
2、需要在核心配置文件中绑定接口
<mappers>
<package name="com.zheng.Dao"/>
</mappers>
本质:反射机制实现
底层:动态代理
使用注解实现增删改查
1、接口
public interface UserMapper {
/**
* 查询用户
*/
@Select("select * from user")
public List<User> getUsers();
/**
* 根据id查询用户
*/
@Select("select * from user where id=#{id}")
public User selectUserById(@Param("id") String id);
/**
* 增加
*/
@Insert("insert into user (id,name,pwd) values (#{id},#{name},#{pwd})")
public int addUser(User user);
/**
* 修改
*/
@Update("update user set name=#{name},pwd=#{pwd} where id=#{id}")
public int update(User user);
/**
* 删除一个用户
*/
@Delete("delete from user where id=#{id}")
public int deleteUser(String id);
}
2、测试
public class UserDaoTest {
@Test //查询所有的用户
public void test() {
SqlSession sqlSession = MyBtaisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUsers();
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
@Test //根据id查询用户
public void selectUserById(){
SqlSession sqlSession = MyBtaisUtil.getSqlSession();
UserMapper user = sqlSession.getMapper(UserMapper.class);
User user1 = user.selectUserById("1");
if(user1!=null){
System.out.println(user1);
}else{
System.out.println("查询失败");
}
sqlSession.close();
}
@Test //增加用户
public void addUser(){
SqlSession sqlSession = MyBtaisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res= mapper.addUser(new User("3","老刘","999"));
if(res>0){
System.out.println("增加成功!!!");
}else{
System.out.println("增加失败");
}
sqlSession.close();
}
@Test //修改用户
public void updateUser(){
SqlSession sqlSession = MyBtaisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.update(new User("3", "范梦涵", "1234567"));
if(res>0){
System.out.println("修改成功");
}else {
System.out.println("修改失败!!!");
}
sqlSession.close();
}
@Test //删除用户
public void deleteUser(){
SqlSession sqlSession = MyBtaisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.deleteUser("3");
if(res>0){
System.out.println("删除成功!!!");
}else{
System.out.println("提交失败");
}
sqlSession.close();
}
}
注意
我们可以在工具类创建的时候实现自动提交事务
测试类
【注意:我们必须要将接口注册绑定到我们的核心配置文件中】关于@Param()注解
基本类型的参数或者String类型,需要加上
引用类型不需要加
如果只有一个基本类型的话,可以忽略,但是建议大家都加上
我们在SQL中引用的就是我们这里的@Param()中设定的属性名
后端框架的学习----mybatis框架(7、使用注解开发)的更多相关文章
- 后端框架的学习----mybatis框架(5、分页)
七.分页 简单使用 1.在要使用Log4j的类中,导入包import org.apache.log4j.Logger; 2.日志对象,参数为当前类的class static Logger logger ...
- 后端框架的学习----mybatis框架(3、配置解析)
3.配置解析 1.核心配置文件 2.环境配置(environment) 3.属性(properties) 可以通过properties属性来实现引用配置文件 这些属性可以在外部进行配置,并可以进行动态 ...
- 后端框架的学习----mybatis框架(9、多对一处理和一对多处理)
9.多对一处理和一对多处理 #多对一 <!--按照结果集嵌套查询--> <select id="getAllStudent1" resultMap="S ...
- 后端框架的学习----mybatis框架(8、lombok)
8.lombok #测试环境搭建 1.导入lombok 2.新建实体类Teacher,Student 3.建立mapper接口 4.建立mapper.xml文件 5.在核心配置文件中绑定注册mappe ...
- 后端框架的学习----mybatis框架(6、日志)
六.日志 如果一个数据库操作,出现了异常,我们需要排错,日志就是最好的帮手 setting设置 <settings> <setting name="logImpl" ...
- 学习mybatis框架>从零开始学JAVA
目录 学习mybatis框架 mybatis框架的介绍 什么是mybatis框架 为什么要使用mybatis框架 mybatis的优点 Mybatis框架环境搭建 去官网下载jar包 创建一个普通的j ...
- 深入学习Mybatis框架(二)- 进阶
1.动态SQL 1.1 什么是动态SQL? 动态SQL就是通过传入的参数不一样,可以组成不同结构的SQL语句. 这种可以根据参数的条件而改变SQL结构的SQL语句,我们称为动态SQL语句.使用动态SQ ...
- 深入学习Mybatis框架(一)- 入门
1.什么是Mybatis? Mybatis是一个优秀持久层框架,提供了对数据库的一系列操作(增删改查).Mybatis可以避免重复的写JDBC代码,让我们以较少的代码实现对数据库的操作,从而提高开发效 ...
- 快速学习mybatis框架
一.介绍Mybatis(主要从以下两点进行介绍) 1.MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动 ...
随机推荐
- identity4 系列————启航篇[二]
前言 开始identity的介绍了. 正文 前文介绍了一些概念,如果概念不清的话,可以去前文查看. https://www.cnblogs.com/aoximin/p/13475444.html 对一 ...
- vue项目打包后使用reverse-sourcemap反编译到源码(详解版)
首先得说一下,vue项目中productionSourceMap这个属性.该属性对应的值为true|false. 当productionSourceMap: true,时: 1.打包后能看到xxx ...
- 【NOI P模拟赛】仙人掌(圆方树,树形DP)
题面 n n n 个点, m m m 条边. 1 ≤ n ≤ 1 0 5 , n − 1 ≤ m ≤ 2 × 1 0 5 1\leq n\leq 10^5,n-1\leq m\leq 2\times1 ...
- 第八十五篇:Vue购物车(六) 总价的动态计算
好家伙, 1.实现总价的动态计算 商品数量被动态的改变后, 相应的总价同样会改变 所以我们需要重新计算总价格了 这个的实现并不难 我只要拿到商品的数量就好了 我们用一个计算属性计算出已勾选商品的总数量 ...
- 第八十篇:Vue购物车(一) 购物车基本框架
好家伙,又是购物车 来吧,这是参照黑马的课程写的一个购物车 目录结构如下: 1.首先组件导入, Counter.vue <template> <div class="num ...
- 全网最简单的大文件上传与下载代码实现(React+Go)
前言 前段时间我需要实现大文件上传的需求,在网上查找了很多资料,并且也发现已经有很多优秀的博客讲了大文件上传下载这个功能. 我的项目是个比较简单的项目,并没有采用特别复杂的实现方式,所以我这篇文章的目 ...
- salesforce零基础学习(一百一十七)salesforce部署方式及适用场景
本篇参考:https://architect.salesforce.com/decision-guides/migrate-change https://developer.salesforce.co ...
- 正点原子keilkill脚本
del *.bak /s del *.ddk /s del *.edk /s del *.lst /s del *.lnp /s del *.mpf /s del *.mpj /s del *.obj ...
- Windows Server体验之管理
安装了只有命令行界面的Windows Server之后怎么去管理,对于传统的Windows管理员来说确实是比较棘手的.因为没有了图形化的管理界面,需要更多的去依赖Powershell或者cmd命令去做 ...
- Django CSRF验证失败. 请求被中断.
当页面中form使用POST方式向后台提交时,报如下错误: 禁止访问 (403) CSRF验证失败. 请求被中断. Help Reason given for failure: CSRF toke ...