MyBatis中使用注解进行selectKey的查询
1.定义接口类,方法中添加注解查询
package cn.et.mybatis.lesson02.selectKey; import java.util.List; import java.util.Map; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.SelectKey; public interface KeyAnnoMapper { /* * statement="select max(empNo)+1 as myNo from emp":表示定义的子查询语句 * before=true:表示在之前执行,booler类型的,所以为true * keyColumn="myNo":表示查询所返回的类名 * resultType=int.class:表示返回值得类型 * keyProperty="empNo" :表示将该查询的属性设置到某个列中,此处设置到empNo中 */ //使用注解 @SelectKey(statement="select max(empNo)+1 as myNo from emp" , before=true,keyColumn="myNo",resultType=int.class,keyProperty="empNo") //使用注解进行数据库的插入操作 @Insert(value="insert into emp(empNo,ename,sal) values(#{empNo},#{ename},#{sal})") public void selectEmp1(Map map); }
2.定义主mybatis.xml文件,进行接口类的映射
<?xml version="1.0" encoding="UTF-8" ?> <!-- 说明mybatis的根节点 --> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!--mybatis的根标签configuration --> <configuration> <!-- 资源文件的路径配置 注:cn前面不能用/否则会抛出异常--> <properties resource="cn/et/mybatis/lesson02/jdbc.properties"> </properties> <!-- 配置连接数据库的环境,(开发环境) --> <environments default="development"> <environment id="development"> <!-- 事务交给jdbc管理,Conection(事务) commit(提交) rollback(回滚) --> <transactionManager type="JDBC"/> <!-- 数据源 用来连接数据库(包含四要素,driver,url,username,password) --> <dataSource type="POOLED"> <property name="driver" value="${driverClass}"/> <property name="url" value="${url}"/> <property name="username" value="${userAccount}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <!-- 包含隐射文件主要用于编写sql语句 --> <mappers> <!-- 隐射的资源文件 隐射文件主要编写sql语句 --> <mapper class="cn.et.mybatis.lesson02.selectKey.KeyAnnoMapper"/> </mappers> </configuration>
3.定义测试类,进行测试
package cn.et.mybatis.lesson02.selectKey; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; public class TestMyBatis { //封装session的返回 public static SqlSession getSession(){ String resource = "/cn/et/mybatis/lesson02/mybatis.xml"; InputStream inputStream =TestMyBatis.class.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //操作数据库的类 SqlSession SqlSession session=sqlSessionFactory.openSession(); return session; } @Test public void insertEmp(){ SqlSession session = getSession(); KeyAnnoMapper km = session.getMapper(KeyAnnoMapper.class); Map map=new HashMap(); map.put("ename", "lisi"); map.put("sal", 250); km.selectEmp1(map); System.out.println(map.get("empNo")); session.commit(); } }