MyBatis入门(实现查询语句)

mybatis官网入门案例

copyXML 配置文件案例

copy基于 XML 映射语句的示例

Dept类

public class Dept {
	private Integer deptno;
	private String dname;
	private String loc;

	public Dept() {
		super();
	}

	public Dept(Integer deptno, String dname, String loc) {
		super();
		this.deptno = deptno;
		this.dname = dname;
		this.loc = loc;
	}

	public Integer getDeptno() {
		return deptno;
	}

	public void setDeptno(Integer deptno) {
		this.deptno = deptno;
	}

	public String getDname() {
		return dname;
	}

	public void setDname(String dname) {
		this.dname = dname;
	}

	public String getLoc() {
		return loc;
	}

	public void setLoc(String loc) {
		this.loc = loc;
	}

	@Override
	public String toString() {
		return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + "]";
	}

}

jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///bd1906?characterEncoding=utf8&useSSL=true
jdbc.username=root
jdbc.password=root

下面为了代码看起来简单我将注释写在外面

部分注释(mybatis-config.xml):

 <!-- 运行环境 -->
 <properties resource ="jdbc.properties"/>

  <environments default="development">
    <environment id="development">
      <!-- 事务默认提交方式 手动提交 -->
      <transactionManager type="JDBC"/>
      <!-- 数据源 -->
      <dataSource type="POOLED">
        <property name="driver" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>

mybatis-config.xml

这里主要加入了运行环境和修改了resource的路径,因为我的properties文件里面的名字都与案例上的相同所以不用改

<?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="jdbc.properties"/>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="mapper/DeptMapper.xml"/>
  </mappers>
</configuration>
  • namespace:命名空间

  • id: 标识(查询方法名)

  • parameterType:输出参数

  • resultType:输出参数

  • jdbc中?占位符 可以用一个#{}替换  自动会有添加单引号
    #{}:如果入参类型简单类型(String,基本类型)可以写任意的单词
     复杂类型pojo: 一定写类型的属性名称  建议:写属性名
    

DeptMapper.xml

这里主要改了命名空间,和sql语句以及对应的id、parameterType、resultType参数

<?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="test.DeptMapper">
  <select id="selDept" parameterType="pojo.Dept" resultType="pojo.Dept">
    select * from dept where deptno = #{deptno}
  </select>
</mapper>

DeptTest.java

package test;

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;

import pojo.Dept;

/**
 */
public class DeptTest {
	public static void main(String[] args) throws Exception {
		String resource = "mybatis-config.xml";
		//1.创建输入流对象
		InputStream is = Resources.getResourceAsStream(resource);
		//2.创建sqlSessionFactory
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
		/*3.创建sqlSession对象
		openSession(true)自动提交
		openSession()手动提交*/
		SqlSession ss = ssf.openSession();
		//4 调用执行器
		Dept d = new Dept();
		d.setDeptno(10);
		Dept dept = (Dept)ss.selectOne("test.DeptMapper.selDept",d.getDeptno());//注意这里一般是命名空间.id
		System.out.println(dept);
		//5 释放
		ss.close();
	}
}