Mybatis

01.书写大配置:
mybatis-config.xml,并将大配置放在src目录下:
<?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">
<!-- root Node -->
<configuration>
<!--别名定制-->
<typeAliases>
<typeAlias type="cn.happy.entity.Dept" alias="Dept"/>
</typeAliases>
<environments default="development">
<!-- only One db environment -->
<environment id="development">
<!-- tx use jdbc's -->
<transactionManager type="managed" />
<!-- datasource's type is pooled
it can use the value of list:
pooled
unpooled
jndi
-->
<dataSource type="UNPOOLED">
<property name="driver" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" ></property>
<property name="username" value="dog" />
<property name="password" value="dog" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="cn/happy/entity/Dept.xml" />
<mapper resource="cn/happy/entity/GetMapper.xml" />
</mappers>
</configuration>
02.书写实体类:
package cn.happy.entity;
public class Dept {
private Integer deptno;
private String deptname;
public Integer getDeptno() {
return deptno;
}
public void setDeptno(Integer deptno) {
this.deptno = deptno;
}
public String getDeptname() {
return deptname;
}
public void setDeptname(String deptname) {
this.deptname = deptname;
}
}
03.书写小配置(包含crud)
<?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">
<!-- namespace:隔离同名类 -->
<mapper namespace="cn.happy.entity.Dept">
<select id="selectDept" resultType="Dept">
<!-- SQL 列名,表名和数据库表 不区分大小写
记录是区分的: oa OA
-->
select * from Dept
</select>
<!-- 1.1 带条件查询 -->
<select id="selectDeptById" parameterType="Dept" resultType="Dept">
select * from Dept where deptno=#{deptno}
</select>
<!-- 1.2 insert -->
<insert id="insertDept" parameterType="Dept">
insert into Dept(deptno,deptname) values(#{deptno},#{deptname})
</insert>
<!-- 1.2 update -->
<update id="updateDeptById" parameterType="Dept">
update Dept set deptname=#{deptname} where deptno=#{deptno}
</update>
<!-- 1.3 delete-->
<delete id="deleteDeptById" parameterType="Dept">
delete from Dept where deptno=#{deptno}
</delete>
</mapper>
04.测试类
package cn.happy.test;
//ALt+/
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.Reader;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import cn.happy.dao.IDeptDao;
import cn.happy.entity.Dept;
public class H_01Test {
/**
* 1.5 getMapper()
* @throws FileNotFoundException
* @throws Exception
*/
@Test
public void testgetAllDepts() throws Exception{
//通过session的getMapper(传入接口类型的字节码)返回的是一个接口类型的对象
IDeptDao mapper = session.getMapper(IDeptDao.class);
//通过接口类型的对象中自己定制的方法,可以得到想要的结果
try {
List<Dept> list = mapper.getAllDepts();
for (Dept dept : list) {
System.out.println(dept.getDeptname());
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 1.1 delete
* @throws FileNotFoundException
* @throws Exception
*/
@Test
public void testdeleteDeptById() throws Exception{
Dept dt=new Dept();
dt.setDeptno(32);
int count = session.delete("deleteDeptById",dt);
session.commit();
System.out.println(count);
session.close();
}
/**
* 1.1 update
* @throws FileNotFoundException
* @throws Exception
*/
@Test
public void testupdateDeptById() throws Exception{
Dept dt=new Dept();
dt.setDeptno(1);
dt.setDeptname("月饼不");
int count = session.update("updateDeptById",dt);
session.commit();
System.out.println(count);
session.close();
}
/**
* 1.1 insert
* @throws FileNotFoundException
* @throws Exception
*/
@Test
public void testinsertDept() throws Exception{
Dept dt=new Dept();
dt.setDeptname("月饼兔子");
dt.setDeptno(54);
int count = session.insert("insertDept",dt);
session.commit();
System.out.println(count);
session.close();
}
/**
* 1.1 带条件查询
* @throws FileNotFoundException
* @throws Exception
*/
@Test
public void testselectDeptById() throws Exception{
Dept dt=new Dept();
dt.setDeptno(1);
Dept dept = session.selectOne("selectDeptById",dt);
System.out.println(dept.getDeptname());
session.close();
}
SqlSession session;
@Before
public void initData() throws FileNotFoundException{
//1.1 SqlSessionFactoryBuilder
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
//1.2 SqlSesssionFactory
Reader reader=new FileReader("src/mybatis-config.xml");
SqlSessionFactory factory = builder.build(reader);
//1.3 SqlSession
session= factory.openSession();
}
@Test
public void testselectDept() throws Exception{
//1.1 SqlSessionFactoryBuilder
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
//1.2 SqlSesssionFactory
Reader reader=new FileReader("src/mybatis-config.xml");
SqlSessionFactory factory = builder.build(reader);
//1.3 SqlSession
SqlSession session = factory.openSession();
List<Dept> list = session.selectList("selectDept");
for (Dept dept : list) {
System.out.println(dept.getDeptname());
}
session.close();
}
}
别名的使用(如下实体类就可以用Dept代替)
<!--别名定制-->
<typeAliases>
<typeAlias type="cn.happy.entity.Dept" alias="Dept"/>
</typeAliases>
GetMapper()的使用
首先创建接口:IDeptDao
package cn.happy.dao;
import java.util.List;
import cn.happy.entity.Dept;
/**
* 接口
* @author Happy
* 该接口有对应的xml文件
*
*/
public interface IDeptDao {
//部门中的数据进行CRUD操作
//检索所有部门
public List<Dept> getAllDepts();
}
然后创建该接口对应的xml文件,相当于把实体类里边的方法描述在了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">
<!-- 相当与getMapper的映射文件 mapper里边有命名空间-->
<mapper namespace="cn.happy.dao.IDeptDao">
<select id="getAllDepts" resultType="Dept">
select * from dept
</select>
</mapper>
书写测试类:
/**
* 1.5 getMapper()
* @throws FileNotFoundException
* @throws Exception
*/
@Test
public void testgetAllDepts() throws Exception{
//通过session的getMapper(传入接口类型的字节码)返回的是一个接口类型的对象
IDeptDao mapper = session.getMapper(IDeptDao.class);
//通过接口类型的对象中自己定制的方法,可以得到想要的结果
List<Dept> list = mapper.getAllDepts();
for (Dept dept : list) {
System.out.println(dept.getDeptname());
}
}
/**
* 1.5 getMapper()
* @throws FileNotFoundException
* @throws Exception
*/
@Test
public void testgetAllDepts() throws Exception{
//通过session的getMapper(传入接口类型的字节码)返回的是一个接口类型的对象
IDeptDao mapper = session.getMapper(IDeptDao.class);
//通过接口类型的对象中自己定制的方法,可以得到想要的结果
List<Dept> list = mapper.getAllDepts();
for (Dept dept : list) {
System.out.println(dept.getDeptname());
}
}


浙公网安备 33010602011771号