今天写mybatis,分享一下
mybatis-config.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:类路劲(有包用com/.../...) url:网址或者磁盘路劲 --> <properties resource="jdbc.properties"/> <settings> <!-- 控制台显示SQL语句 --> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings> <!-- environments:可以连接多种数据库 environment:配置一个数据库 id: 唯一标识 transactionManager: 事务管理器 dataSource: 数据资源 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${orcl_driver}"/> <property name="url" value="${orcl_url}"/> <property name="username" value="${orcl_username}"/> <property name="password" value="${orcl_password}"/> </dataSource> </environment> </environments> <!-- databaseIdProvider: 支持多数据库厂商 type:DB_VENDOR| --> <databaseIdProvider type="DB_VENDOR"> <!-- 为不同的数据厂商取名字 --> <property name="MySQL" value="mysql"/> <property name="Oracle" value="oracle" /> <property name="SQL Server" value="sqlserver"/> </databaseIdProvider> <!-- mapper: 注册SQL映射 注册配置问件 resource: 引用类路径下的SQL映射文件 com/jadeon/mybatis/mapper/DeptMapper.xml url: 引用网络路径或者磁盘路劲下的SQL映射文件 file:///var/mappers/AuthorMapper.xml 注册接口 class: 引用(注册接口) 1.有SQL映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下 2.没有SQL映射文件,所有的SQL都是利用注释写在接口上 推荐: 1.比较重要的,复杂的Dao接口我们写SQL映射文件 2.不重要的,简单的Dao为了快速开发可以使用注释 --> <mappers> <mapper resource="com/jadeon/bean/DeptMapper.xml"/> <!-- 基于Dao接口类 --> <mapper resource="com/jadeon/mapper/DeptMapper.xml"/> </mappers> <!-- 批量注册:使用包路径 1.有SQL映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下 2.没有SQL映射文件,所有的SQL都是利用注释写在接口上 --> <package name="com.mybatis.dao"/> </configuration>jdbc连接属性:我使用的数据库是Oracle。配置文件: jdbc.properties
orcl_driver = oracle.jdbc.OracleDriver orcl_url = jdbc:oracle:thin:localhost:1521:orcl orcl_username = scott orcl_password = tiger
Dao接口类:
package com.jadeon.mapper; import java.util.List; import java.util.Map; import com.jadeon.bean.DeptInfo; public interface DeptMapper { public List<DeptInfo> allDept(); public DeptInfo oneDept(Map<String, Object> map); public void delDept(Integer deptno); public void addDept(DeptInfo info); public void edtDept(Map<String, Object> map); }实现Dao接口的配置文件: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.jadeon.mapper.DeptMapper"> <select id="allDept" resultType="com.jadeon.bean.DeptInfo"> select * from dept </select> <select id="oneDept" resultType="com.jadeon.bean.DeptInfo"> select * from dept where deptno = #{deptno} and dname = #{dname} </select> <delete id="delDept"> delete from dept where deptno = #{deptno} </delete> <insert id="addDept" parameterType="com.jadeon.bean.DeptInfo"> insert into dept (deptno,dname,loc) values (#{deptno},#{dname},#{loc}) </insert> <update id="edtDept"> update dept set dname = #{dname} , loc = #{loc} where deptno = #{deptno} </update> </mapper>DBHelper帮助类:
package com.jadeon.util; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class DBHelper { public static SqlSession openSession() throws Exception{ String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); return sqlSessionFactory.openSession(); } }
最后测试:
package com.jadeon.test; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import com.jadeon.bean.DeptInfo; import com.jadeon.mapper.DeptMapper; import com.jadeon.util.DBHelper; public class DeptMapperTest { @Test public void allDept() throws Exception{ SqlSession session = DBHelper.openSession(); DeptMapper mapper = session.getMapper(DeptMapper.class); List<DeptInfo> infos = mapper.allDept(); for (DeptInfo info : infos) { System.out.println(info.getDeptno()+">>"+info.getDname()+">>"+info.getLoc()); } } @Test public void oneDept() throws Exception{ SqlSession session = DBHelper.openSession(); DeptMapper mapper = session.getMapper(DeptMapper.class); Map<String, Object> map = new HashMap<String, Object>(); map.put("deptno", 40); map.put("dname", "OPERATIONS"); DeptInfo info = mapper.oneDept(map); System.out.println(info.getDeptno()+">>"+info.getDname()+">>"+info.getLoc()); } @Test public void addDept() throws Exception{ SqlSession session = DBHelper.openSession(); DeptMapper mapper = session.getMapper(DeptMapper.class); mapper.addDept(new DeptInfo(50, "Nothing5", "Nothing5")); session.commit(); } @Test public void edtDept() throws Exception{ SqlSession session = DBHelper.openSession(); DeptMapper mapper = session.getMapper(DeptMapper.class); Map<String, Object> map = new HashMap<String, Object>(); map.put("dname", "ACCOUNTING"); map.put("loc", "NEW YORK"); map.put("deptno", 10); mapper.edtDept(map); session.commit(); } @Test public void delDept() throws Exception{ SqlSession session = DBHelper.openSession(); DeptMapper mapper = session.getMapper(DeptMapper.class); mapper.delDept(5); session.commit(); } }