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