目录
- /**
- * @author 海绵hong
- * @version 1.0
- * MyBatisNativeTest: 演示使用MyBatis原生API操作
- */
- public class MyBatisNativeTest {
-
- //属性
- private SqlSession sqlSession;
-
- //编写方法完成初始化
- @Before
- public void init() {
- //获取到sqlSession
- sqlSession = MyBatisUtils.getSqlSession();
- //sqlSession 返回的对象是 DefaultSqlSession
- System.out.println("sqlSession--" + sqlSession.getClass());
-
- }
-
- //使用sqlSession原生的API调用我们编写的方法[了解]
- @Test
- public 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.hong.mapper.MonsterMapper.addMonster", monster);
-
- System.out.println("insert---" + insert);
- //删除
-
- int delete = sqlSession.delete("com.hong.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.hong.mapper.MonsterMapper.updateMonster", monster);
- System.out.println("update--" + update);
-
- //查询
-
- List
monsters = - sqlSession.selectList("com.hong.mapper.MonsterMapper.findAllMonster");
-
- for (Monster monster : monsters) {
- System.out.println("monster--" + monster);
- }
-
- //如果是增删改, 需要提交事务
- if(sqlSession != null) {
- sqlSession.commit();
- sqlSession.close();
- }
-
- System.out.println("操作成功...");
- }
- }
原生的api调用就是会去找你的MonsterMapper.xml配置的语句
我们不去使用xml配置方法去操作数据库,那么我们就可以使用注解的方式操作
首先我们需要去创建一个接口:
-
- /**
- * @author 海绵hong
- * @version 1.0
- * MonsterAnnotation: 使用注解的方式来配置接口方法
- */
- public interface MonsterAnnotation {
-
- //添加monster
- /*
- 解读
- 1. 使用注解方式配置接口方法addMonster
- 2. 回顾xml如何配置
-
- INSERT INTO `monster`
- (`age`, `birthday`, `email`, `gender`, `name`, `salary`)
- VALUES (#{age}, #{birthday}, #{email}, #{gender}, #{name}, #{salary})
-
- 解读
- 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 FROM `monster` WHERE id = #{id}
-
- */
- @Delete("DELETE FROM `monster` WHERE id = #{id}")
- public void delMonster(Integer id);
-
- //修改Monster
- /*
-
- UPDATE `monster`
- SET `age`=#{age} , `birthday`= #{birthday}, `email` = #{email},
- `gender` = #{gender} , `name`= #{name}, `salary` = #{salary}
- WHERE id = #{id}
-
- */
- @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 * FROM `monster` WHERE id = #{id}
-
- */
- @Select("SELECT * FROM `monster` WHERE id = #{id}")
- public Monster getMonsterById(Integer id);
-
- //查询所有的Monster
- /*
- xml配置
-
- SELECT * FROM `monster`
-
- */
- @Select("SELECT * FROM `monster`")
- public List
findAllMonster(); - }
这样就是将一个MonsterMapper接口和MonsterMapper.xml配置文件和到一起
当然我们不使用xml文件配置,那么也需要改一下mybatis-config.xml(有数据库配置文件,和需要的jdbc包)
- <mappers>
-
-
- <mapper class="com.hong.mapper.MonsterAnnotation"/>
-
-
- mappers>
测试文件
-
- /**
- * @author 海绵hong
- * @version 1.0
- */
- public class MonsterAnnotationTest {
-
- //属性
- private SqlSession sqlSession;
- private MonsterAnnotation monsterAnnotation;
-
- @Before
- public void init() {
- //获取到sqlSession
- sqlSession = MyBatisUtils.getSqlSession();
- monsterAnnotation = sqlSession.getMapper(MonsterAnnotation.class);
- //返回的依然是一个接口的代理对象
- System.out.println("monsterAnnotation--" + monsterAnnotation.getClass());
- }
-
- @Test
- public 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("保存成功...");
-
- }
-
- @Test
- public void findAllMonster() {
-
- //使用接口配置注解的方式操作DB
- List
allMonster = monsterAnnotation.findAllMonster(); - for (Monster monster : allMonster) {
- System.out.println("monster--" + monster);
- }
-
-
- if(sqlSession != null) {
- sqlSession.close();
- }
-
- System.out.println("查询成功...");
- }
- }
- @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)