jdbc.properties:
- url=jdbc\:oracle\:thin\:@localhost\:1521\:orcl
- driverClass=oracle.jdbc.OracleDriver
- account=scott
- password=tiger
mybatis.xml:
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <properties resource="cn/et/mybatis/lesson01/jdbc.properties">
- </properties>
- <!--
- 配置连接数据库的环境 development开发环境
- -->
- <environments default="development">
- <environment id="development">
- <!-- 事务交给JDBC来管理 也就是通过 Connection的 commit和rollback管事事务 -->
- <transactionManager type="JDBC"/>
- <dataSource type="POOLED">
- <property name="driver" value="${driverClass}"/>
- <property name="url" value="${url}"/>
- <property name="username" value="${account}"/>
- <property name="password" value="${password}"/>
- </dataSource>
- </environment>
- </environments>
- <mappers>
- <mapper resource="cn/et/mybaits/lesson02/selectKey/key_mapper.xml" />
- <mapper class="cn.et.mybaits.lesson02.selectKey.KeyAnnoMapper" />
- </mappers>
- </configuration>
key_mapper.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">
- <!--
- 接口映射
- namespace必需跟接口的全名一致
- -->
- <mapper namespace="cn.et.mybaits.lesson02.selectKey.KeyMapper">
- <insert id="saveEmp" parameterType="map" >
- <!--
- 1 max(列)+1 只允许单线程 不建议在实际开发环境中使用 可以用于调试
- 2 序列 只允许单数据库情况 nextval
- 3 UUID 分布式应用程序 安全的 不会重复, 32位占磁盘空间大
- -->
- <!--
- 1. 执行sql语句
- 2. 将sql语句返回值写入到map对象中 map.put("empNo",8000)
- order="BEFORE" 设置在调用sql语句之前调用
- resultType="int" 设置返回的类型
- keyProperty="empNo" 将sql语句返回值写入到map对象中 map.put("empNo",8000)
- -->
- <selectKey keyColumn="myNo" keyProperty="empNo" order="BEFORE" resultType="int">
- select max(empNo)+1 as myNo from emp
- </selectKey>
- insert into emp(empno,ename,sal) values(#{empNo},#{ename},#{sal})
- </insert>
- </mapper>
KeyMapper接口---xml映射:
- package cn.et.mybaits.lesson02.selectKey;
- import java.util.Map;
- public interface KeyMapper {
- public void saveEmp(Map map);
- }
KeyAnnoMapper---注解映射sql:
- package cn.et.mybaits.lesson02.selectKey;
- import java.util.Map;
- import org.apache.ibatis.annotations.Insert;
- import org.apache.ibatis.annotations.SelectKey;
- public interface KeyAnnoMapper {
- @SelectKey(statement="select max(empNo)+1 as myNo from emp",
- keyColumn="myNo",
- keyProperty="empNo",
- before=true,
- resultType=int.class)
- @Insert("insert into emp(empno,ename,sal) values(#{empNo},#{ename},#{sal})")
- public void saveEmp(Map map);
- }
TestMybatis测试类:
- package cn.et.mybaits.lesson02.selectKey;
- 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 {
- public static SqlSession getSession(){
- String resource = "/cn/et/mybaits/lesson02/mybatis.xml";
- InputStream inputStream = TestMybatis.class.getResourceAsStream(resource);
- SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
- //打开会话
- SqlSession session = sqlSessionFactory.openSession();
- return session;
- }
- public static void main(String[] args) {
- SqlSession session = getSession();
- KeyMapper cm = session.getMapper(KeyMapper.class);
- Map map = new HashMap();
- map.put("ename", "李黑");
- map.put("sal", 4000);
- cm.saveEmp(map);
- System.out.println(map.get("empNo"));
- session.commit();
- }
- /**
- * 注解sql语句
- */
- @Test
- public void test(){
- SqlSession session = getSession();
- KeyAnnoMapper cm = session.getMapper(KeyAnnoMapper.class);
- Map map = new HashMap();
- map.put("ename", "李黑");
- map.put("sal", 4000);
- cm.saveEmp(map);
- System.out.println(map.get("empNo"));
- session.commit();
- }
- }