后端开发基础-MyBatis框架学习-002——基础概念

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Coder_Boy_/article/details/82935139
  • 查询结果字段名与javabean属性名不一致的处理方式:

  • MyBatis中DAO对象的生成方式:

​​​​​​​​​​​​​​#Dao对象有两种生成方法
##采用Mapper接口由MyBatis框架生成
DataSource-->SqlSessionFactoryBean-->MapperScannerConfigurer
-->将MyBatis框架生成的Dao对象放入Spring容器
##程序员自己编写Dao实现类
DataSource-->SqlSessionFactoryBean
-->SqlSessionTemplate-->给自己编写的Dao注入
//扫描
public class CostDao{
//注入
private SqlSessionTemplate template;
    public List<User> findAll(){
        // SqlSession session = ssf.openSession();
        // List list = session.selectList("findAll");
        // session.close();
        // return list;
        return template.selectList("findAll");
    }
}

案例采用 Mapper接口方式演示:

案例演示:

工程案例目录结构

 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.study</groupId>
  <artifactId>mybatis-day07-2</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <dependencies>
  	<dependency>
  		<groupId>org.mybatis</groupId>
  		<artifactId>mybatis</artifactId>
  		<version>3.3.0</version>
  	</dependency>
  	<dependency>
  		<groupId>com.oracle</groupId>
  		<artifactId>ojdbc14</artifactId>
  		<version>10.2.0.4.0</version>
  	</dependency>
  	<dependency>
  		<groupId>junit</groupId>
  		<artifactId>junit</artifactId>
  		<version>4.12</version>
  	</dependency>
  </dependencies>
  
</project>

SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" 
          "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
	<environments default="environment">
		<environment id="environment">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
					<property name="driver" value="oracle.jdbc.OracleDriver"/>
					<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
					<property name="username" value="learn"/>
					<property name="password" value="learn"/>
			</dataSource>
		</environment>
	</environments>
	
	<!-- 加载SQL定义文件 -->
	<mappers>
		<mapper resource="UserMapper.xml" />
	</mappers>
</configuration>

CostMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"      
 "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
 <mapper namespace="com.dk.dao.CostDAO">
 	<!-- 利用别名,将查询结果字段名与Cost属性名保持一致 -->
 	<select id="findAll" resultType="com.dk.entity.Cost">
 		select cost_id id,
 		name,
 		base_duration,
 		base_cost,
 		unit_cost,
 		status,
 		descr,
 		creatime,
 		startime,
 		cost_type
 		from cost
 	</select>
 	
 	<!-- 利用resultMap自定义装载规则,代替resultType -->
 	<select id="findAll1"  resultMap="costMap">
 		select * from cost
 	</select>
 	<resultMap type="com.dk.entity.Cost" id="costMap">
 		<id property="id" column="cost_id"/>
 		<result property="name" column="name"/>
 		<result property="base_cost" column="base_cost"/>
 		<!-- 省略了名称一致的字段装载配置 -->
 	</resultMap>
 </mapper>
 

Cost.java

package com.dk.entity;

import java.io.Serializable;
import java.sql.Date;

public class Cost implements Serializable{

	private Integer id;//不一致
	private String  name;
	private Long  base_duration;
	private Double base_cost;
	private Double uint_cost;
	private String status;
	private String descr;
	private Date creatime;
	private Date startime;
	private String cost_type;
	

	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Long getBase_duration() {
		return base_duration;
	}
	public void setBase_duration(Long base_duration) {
		this.base_duration = base_duration;
	}
	public Double getBase_cost() {
		return base_cost;
	}
	public void setBase_cost(Double base_cost) {
		this.base_cost = base_cost;
	}
	public Double getUint_cost() {
		return uint_cost;
	}
	public void setUint_cost(Double uint_cost) {
		this.uint_cost = uint_cost;
	}
	public String getStatus() {
		return status;
	}
	public void setStatus(String status) {
		this.status = status;
	}
	public String getDescr() {
		return descr;
	}
	public void setDescr(String descr) {
		this.descr = descr;
	}
	public Date getCreatime() {
		return creatime;
	}
	public void setCreatime(Date creatime) {
		this.creatime = creatime;
	}
	public Date getStartime() {
		return startime;
	}
	public void setStartime(Date startime) {
		this.startime = startime;
	}
	public String getCost_type() {
		return cost_type;
	}
	public void setCost_type(String cost_type) {
		this.cost_type = cost_type;
	}
	
}

CostDAO.java

package com.dk.dao;

import java.util.List;

import com.dk.entity.Cost;

public interface CostDAO {

	public List<Cost> findAll();
	public List<Cost> findAll1();
}

TestCostDAO.java

package test;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import com.dk.dao.CostDAO;
import com.dk.entity.Cost;

public class TestCostDAO {

	@Test
	public void test() throws IOException{
		//将SqlMapConfig.xml转成Reader
		String conf = "conf/SqlMapConfig.xml";
		Reader reader = Resources.getResourceAsReader(conf);
		//获取SqlSession
		SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
		SqlSessionFactory factory = builder.build(reader);
		SqlSession session = factory.openSession();
		//获取CostDAO对象
		CostDAO dao = session.getMapper(CostDAO.class);
		List<Cost> list = dao.findAll1();
		for(Cost cost:list){
			System.out.println(cost.getId()+" " +cost.getName()
			+" "+cost.getCreatime());
		}
		session.close();//释放连接资源
	}

}

 编写每一个方法对应依次运行test进行测试:

扫描二维码关注公众号,回复: 3575034 查看本文章

猜你喜欢

转载自blog.csdn.net/Coder_Boy_/article/details/82935139