马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
原生的API&注解方式
1.MyBatis原生的API调用
1.1原生API快速入门
需求:在前面的项目基础上,使用MyBatis原生的API完成,即直接通过SqlSession接口的方法来完成操作
1.2代码实现
MyBatisNativeTest.java,演示原生的API操作
其实底层还是使用的映射的xml文件的sql语句
2.MyBatis注解方式操作
2.1注解方式快速入门
之前我们是使用xml文件的方式来实现接口声明的方法,现在使用注解方式来完成增删改查
(1)创建接口 MonsterAnnotation.java,添加注解- package com.li.mapper;
- import com.li.entity.Monster;
- import org.apache.ibatis.annotations.Delete;
- import org.apache.ibatis.annotations.Insert;
- import org.apache.ibatis.annotations.Select;
- import org.apache.ibatis.annotations.Update;
- import java.util.List;
- /**
- * @author 李
- * @version 1.0
- * MonsterAnnotation:使用注解的方式来配置我们的接口方法
- */
- public interface MonsterAnnotation {
- //添加 monster
- /**
- * 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>
- */
- @Insert(value = "INSERT INTO `monster` " +
- <mappers>
-
-
- <mapper />
- </mappers>"(`age`,`birthday`,`email`,`gender`,`name`,`salary`) " +
- <mappers>
-
-
- <mapper />
- </mappers>"VALUES (#{age},#{birthday},#{email},#{gender},#{name},#{salary})")
- public void addMonster(Monster monster);
- //根据id删除一个Monster
- @Delete(value = "DELETE FROM `monster` WHERE `id`=#{id}")
- public void delMonster(Integer id);
- //修改Monster
- //注解配置时value可以省略
- @Update("UPDATE `monster` " +
- <mappers>
-
-
- <mapper />
- </mappers>"SET `age`=#{age},`birthday`=#{birthday},`email`=#{email}," +
- <mappers>
-
-
- <mapper />
- </mappers>"gender`=#{gender},`name`=#{name},`salary`=#{salary} " +
- <mappers>
-
-
- <mapper />
- </mappers>"WHERE `id`=#{id};")
- public void updateMonster(Monster monster);
- //查询-根据id
- @Select("SELECT * FROM `monster` WHERE id=#{id}")
- public Monster getMonsterById(Integer id);
- //查询所有的Monster
- @Select("SELECT * FROM `monster`")
- public List<Monster> findAllMonster();
- }
复制代码 (2)修改mybatis-config.xml,对MonsterAnnotation 进行注册- <mappers>
-
-
- <mapper />
- </mappers>
复制代码 (3)测试- package com.li.mapper;import com.li.entity.Monster;import com.li.util.MybatisUtils;import org.apache.ibatis.session.SqlSession;import org.junit.Before;import org.junit.Test;import java.util.Date;import java.util.List;/** * @author 李 * @version 1.0 */public class MonsterAnnotationTest { private SqlSession sqlSession; private MonsterAnnotation monsterAnnotation; @Before public void init() { sqlSession = MybatisUtils.getSqlSession(); monsterAnnotation = sqlSession.getMapper(MonsterAnnotation.class); //class com.sun.proxy.$Proxy11 System.out.println("monsterAnnotation的运行类型=" + monsterAnnotation.getClass()); } @Test public void addMonster() { Monster monster = new Monster(); monster.setAge(99); monster.setBirthday(new Date()); monster.setEmail("[email protected]"); monster.setGender(0); monster.setName("狐狸精"); monster.setSalary(3000); //使用在接口方法配置注解的方式完成对DB的操作 monsterAnnotation.addMonster(monster); //如果是增删改,需要提交事务 if (sqlSession != null) {<mappers>
-
-
- <mapper />
- </mappers>sqlSession.commit();<mappers>
-
-
- <mapper />
- </mappers>sqlSession.close(); } } @Test public void findAllMonster() { //使用接口方法配置注解的方式完成操作 List allMonster = monsterAnnotation.findAllMonster(); for (Monster monster : allMonster) {<mappers>
-
-
- <mapper />
- </mappers>System.out.println("monster=" + monster); } if (sqlSession != null) {<mappers>
-
-
- <mapper />
- </mappers>sqlSession.close(); } }}
复制代码 2.2注意事项和使用细节
- 如果是通过注解的方式,就不再使用MonsterMapper.xml文件,但是需要在mybatis的配置文件中引入含注解的类/接口
- 添加时,如果要返回自增长的id值,可以使用@Option注解,组合使用
- /**
- * 1.useGeneratedKeys = true 返回自增的值
- * 2.keyProperty = "id" 自增对应的对象属性
- * 3.keyColumn = "id" 自增的表字段
- * 4.如果 keyProperty 和 keyColumn 的值相同,可以省略 keyColumn
- */
- @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);
复制代码
|