MyBatis——Annotation注解
Annotation注解
Select。映射查询的SQL语句。
SelectProvider。Select语句的动态SQL映射。允许指定一个类名和一个方法在执行时返回运行的查询语句。有type和method两属性,type是类的完全限定名,method是该类中的方法名。
Insert。映射插入的SQL语句。
InsertProvider。Insert语句的动态SQL映射。允许指定一个类名和一个方法在执行时返回运行的插入语句。有type和method两属性,type是类的完全限定名,method是该类中的方法名。
Update。映射更新的SQL语句。
UpdateProvider。Update语句的动态SQL映射。允许指定一个类名和一个方法在执行时返回运行的更新语句。有type和method两属性,type是类的完全限定名,method是该类中的方法名。
Delete。映射删除的SQL语句。
DeleteProvider。Delete语句的动态SQL映射。允许指定一个类名和一个方法在执行时返回运行的删除语句。有type和method两属性,type是类的完全限定名,method是该类中的方法名。
Result。在列和属性之间的单独结果映射。属性包括:id、column、property、javaType、jdbcType、type、Handler、one、many。id属性是一个布尔值表示是否被用于注解映射。one属性是单独的联系,和XMl配置中<association>相似,而many属性是对集合而言,和XML配置的<collection>相似。
Results。多个结果映射列表。
Options。提供配置选项的附加值,通常在映射语句上作为附加功能配置出现。
One。复杂类型的单独属性值映射。必须指定select属性,表示已映射的SQL语句的完全限定名。
Many。复杂类型的集合属性映射。必须指定select属性,表示已映射的SQL语句的完全限定名。
Param。应用于映射器方法参数来给每个参数取一个名字。例如使用@Param("id"),SQL中参数应该被命名为#{id}。
示例:配置文件和FKSqlSessionFactory类不再说明
/MyBatisAnnotation/src/com/web/mybatis/mapper/UserMapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.web.mybatis.mapper.UserMapper"> <!-- 开启当前mapper的namespace下的二级缓存 --> <!-- 创建一个LRU缓存,每隔60秒刷新,最大存储512个对象,返回对象只读 --> <cache eviction="LRU" flushInterval="60000" size="512" readOnly="true" /> </mapper>
/MyBatisAnnotation/src/com/web/mybatis/mapper/UserMapper.java
使用Annotation注解的方式替换在mapper文件中写sql的方式。
package com.web.mybatis.mapper; import java.util.List; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Options; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import com.web.mybatis.domain.User; public interface UserMapper { @Insert("INSERT INTO tb_user(id,name,sex,age) VALUES(#{id},#{name},#{sex},#{age})") // @Options(useGeneratedKeys=true,keyProperty="id") //useGeneratedKeys为true表示使用主键自动增长,并把值给id int saveUser(User user); @Delete("DELETE FROM tb_user WHERE id=#{id}") int removeUser(Integer id); @Update("UPDATE tb_user SET name=#{name},sex=#{sex},age=#{age} WHERE id=#{id}") void modifyUser(User user); @Select("SELECT * FROM tb_user WHERE id=#{id}") @Results({//若属性和列名称相同可以省略 @Result(id=true,column="id",property="id"), @Result(column="name",property="name"), @Result(column="sex",property="sex"), @Result(column="age",property="age") }) User selectUserById(Integer id); @Select("SELECT * FROM tb_user") List<User> selectAllUser(); }
/MyBatisAnnotation/src/com/web/mybatis/test/Test.java
package com.web.mybatis.test; import java.util.List; import org.apache.ibatis.session.SqlSession; import com.web.mybatis.domain.User; import com.web.mybatis.factory.FKSqlSessionFactory; import com.web.mybatis.mapper.UserMapper; public class Test { //测试Annotation注解插入数据 public static void insertTest() { SqlSession session = FKSqlSessionFactory.getSqlSession(); UserMapper um = session.getMapper(UserMapper.class); User user = new User(); user.setId(4); user.setName("wang"); user.setSex("女"); user.setAge(22); um.saveUser(user); session.commit(); session.close(); } //测试Annotation注解查询 public static void selectTest() { SqlSession session = FKSqlSessionFactory.getSqlSession(); UserMapper um = session.getMapper(UserMapper.class); User user = um.selectUserById(1); System.out.println(user.toString()); session.commit(); session.close(); } //测试Annotation注解修改数据 public static void updateTest() { SqlSession session = FKSqlSessionFactory.getSqlSession(); UserMapper um = session.getMapper(UserMapper.class); User user = um.selectUserById(4); user.setName("update"); user.setSex("男"); user.setAge(19); um.modifyUser(user); session.commit(); session.close(); } //测试Annotation注解删除数据 public static void deleteTest() { SqlSession session = FKSqlSessionFactory.getSqlSession(); UserMapper um = session.getMapper(UserMapper.class); um.removeUser(4); session.commit(); session.close(); } //测试Annotation注解查询所有数据 public static void selectAllTest() { SqlSession session = FKSqlSessionFactory.getSqlSession(); UserMapper um = session.getMapper(UserMapper.class); List<User> list = um.selectAllUser(); list.forEach(user->System.out.println(user)); session.commit(); session.close(); } public static void main(String[] args) { // insertTest(); // selectTest(); // updateTest(); // deleteTest(); selectAllTest(); } }

浙公网安备 33010602011771号