欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > MyBatis框架学习笔记(二):原生API 的调用 和 注解的使用

MyBatis框架学习笔记(二):原生API 的调用 和 注解的使用

2025/2/23 10:07:48 来源:https://blog.csdn.net/2301_76144723/article/details/140267915  浏览:    关键词:MyBatis框架学习笔记(二):原生API 的调用 和 注解的使用

1 MyBatis原生API

1.1 原生API 快速入门需求

在笔记一案例的基础上将增删改查,使用 MyBatis 原生的 API 完成,就是直接通过SqlSession 接口的方法来完成

1.2 原生API 快速入门-代码实现 

src\test\java\com\hspedu\mapper\MyBatisNativeTest.java

package com.mapper;import com.entity.Monster;
import com.util.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Before;
import org.junit.Test;import java.util.Date;
import java.util.List;/*** MyBatisNativeTest: 演示使用MyBatis原生API操作*/
public class MyBatisNativeTest {//属性private SqlSession sqlSession;//编写方法完成初始化@Beforepublic void init() {//获取到sqlSessionsqlSession = MyBatisUtils.getSqlSession();//sqlSession 返回的对象是 DefaultSqlSessionSystem.out.println("sqlSession--" + sqlSession.getClass());}//使用sqlSession原生的API调用我们编写的方法[了解]@Testpublic void myBatisNativeCrud() {//添加/****  @Override*   public int insert(String statement, Object parameter) {*     return update(statement, parameter);*   }**   statement: 就是接口方法-完整声明*   parameter: 入参*///Monster monster = new Monster();//monster.setAge(100);//monster.setBirthday(new Date());//monster.setEmail("kate2@qq.com");//monster.setGender(0);//monster.setName("大象精-100");//monster.setSalary(10000);////int insert =//        sqlSession.insert("com.mapper.MonsterMapper.addMonster", monster);////System.out.println("insert---" + insert);//删除//int delete = sqlSession.delete("com.mapper.MonsterMapper.delMonster", 11);//System.out.println("delete--" + delete);//修改//Monster monster = new Monster();//monster.setAge(20);//monster.setBirthday(new Date());//monster.setEmail("kate3@qq.com");//monster.setGender(1);//monster.setName("牛魔王-100");//monster.setSalary(1000);//monster.setId(10);//这个一定要有,如果没有就不知道修改哪个对象//int update =//        sqlSession.update("com.mapper.MonsterMapper.updateMonster", monster);//System.out.println("update--" + update);//查询List<Monster> monsters =sqlSession.selectList("com.mapper.MonsterMapper.findAllMonster");for (Monster monster : monsters) {System.out.println("monster--" + monster);}//如果是增删改, 需要提交事务if(sqlSession != null) {sqlSession.commit();sqlSession.close();}System.out.println("操作成功...");}
}

2 MyBatis注解的使用

2.1 注解方式快速入门需求 

在前面项目的基础上,将增删改查,使用 MyBatis 的注解的方式完成 

2.2 注解快速入门-代码实现

(1)创 建 src\main\java\com\mapper\MonsterAnnotation.java

package com.mapper;import com.entity.Monster;
import org.apache.ibatis.annotations.*;import java.util.List;/*** MonsterAnnotation: 使用注解的方式来配置接口方法*/
public interface MonsterAnnotation {//添加monster/*1. 使用注解方式配置接口方法addMonster2. 回顾xml如何配置<insert id="addMonster" parameterType="Monster" useGeneratedKeys="true" keyProperty="id">INSERT INTO `monster`(`age`, `birthday`, `email`, `gender`, `name`, `salary`)VALUES (#{age}, #{birthday}, #{email}, #{gender}, #{name}, #{salary})</insert>解读1. useGeneratedKeys = true 返回自增的值2. keyProperty = "id" 自增值对应的对象属性3. keyColumn = "id" 自增值对应的表的字段*/@Insert("INSERT INTO `monster` (`age`, `birthday`, `email`, `gender`, `name`, `salary`) " +"VALUES (#{age}, #{birthday}, #{email}, #{gender}, #{name}, #{salary})")@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")public void addMonster(Monster monster);//根据id删除一个Monster/*xml文件中的配置<delete id="delMonster" parameterType="Integer">DELETE FROM `monster` WHERE id = #{id}</delete>*/@Delete("DELETE FROM `monster` WHERE id = #{id}")public void delMonster(Integer id);//修改Monster/*<update id="updateMonster" parameterType="Monster">UPDATE `monster`SET `age`=#{age} , `birthday`= #{birthday}, `email` = #{email},`gender` = #{gender} , `name`= #{name}, `salary` = #{salary}WHERE id = #{id}</update>*/@Update("UPDATE `monster` " +"SET `age`=#{age} , `birthday`= #{birthday}, `email` = #{email}, " +"`gender` = #{gender} , `name`= #{name}, `salary` = #{salary} " +"WHERE id = #{id}")public void updateMonster(Monster monster);//查询-根据id/*xml配置<select id="getMonsterById" resultType="Monster">SELECT * FROM `monster` WHERE id = #{id}</select>*/@Select("SELECT * FROM `monster` WHERE id = #{id}")public Monster getMonsterById(Integer id);//查询所有的Monster/*xml配置<select id="findAllMonster" resultType="Monster">SELECT * FROM `monster`</select>*/@Select("SELECT * FROM `monster`")public List<Monster> findAllMonster();
}

(2)修改 mybatis-config.xml , MonsterAnnotaion 进行注册

<mappers><mapper class="com.mapper.MonsterAnnotation"/>
</mappers>

 (3)src\test\java\com\hspedu\mapper\MonsterAnnotationTest.java , 完成测试

package com.mapper;import com.entity.Monster;
import com.util.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Before;
import org.junit.Test;import java.util.Date;
import java.util.List;public class MonsterAnnotationTest {//属性private SqlSession sqlSession;private MonsterAnnotation monsterAnnotation;@Beforepublic void init() {//获取到sqlSessionsqlSession = MyBatisUtils.getSqlSession();monsterAnnotation = sqlSession.getMapper(MonsterAnnotation.class);//返回的依然是一个接口的代理对象System.out.println("monsterAnnotation--" + monsterAnnotation.getClass());}@Testpublic void addMonster() {Monster monster = new Monster();monster.setAge(30);monster.setBirthday(new Date());monster.setEmail("kate6@qq.com");monster.setGender(1);monster.setName("狐狸精-100");monster.setSalary(1000);//使用在接口方法配置注解方式完成对DB操作monsterAnnotation.addMonster(monster);System.out.println("添加后monster-id-" + monster.getId());//如果是增删改, 需要提交事务if(sqlSession != null) {sqlSession.commit();sqlSession.close();}System.out.println("保存成功...");}@Testpublic void findAllMonster() {//使用接口配置注解的方式操作DBList<Monster> allMonster = monsterAnnotation.findAllMonster();for (Monster monster : allMonster) {System.out.println("monster--" + monster);}if(sqlSession != null) {sqlSession.close();}System.out.println("查询成功...");}
}

 测试结果如下

2.3 注意事项和说明 

(1) 如 果 是 通 过 注 解 的 方 式 , 就 不 再 使 用 MonsterMapper.xml 文 件 , 但 是 需 要 在
mybatis-config.xml 文件中注册含注解的类 / 接口
(2) 使用注解方式 , 添加时 , 如果要返回自增长 id , 可以使用 @Option 注解 , 组合使用
@Insert(value = "INSERT INTO `monster` (`age`, `birthday`, `email`, `gender`, `name`,`salary`) " +
"VALUES (#{age}, #{birthday}, #{email}, #{gender}, #{name}, #{salary})")
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
public void addMonster(Monster monster);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词