Mybatis-HelloWorld

今天写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();
	}
}



猜你喜欢

转载自blog.csdn.net/love_moon821/article/details/78784520