首页 > 代码库 > Mybatis
Mybatis
MyBatis
MyBatis简介:
1.MyBatis本是apache的一个开源网站,
2.iBatis是半ORM映射框架,它需要在数据库里手动建表,CURD操作时要自己写SQL语句,而Hibernate是全ORM映射框架,它只需要配置好文件,表会自动生成,CURD的SQL语句也是自动生成的,这是他们的主要区别。
3.MyBatis小巧,简单易学
一.使用MyBatis实现查询部门信息的案例
步骤一:在项目中导入JAR包,并且配置jar包
步骤二:创建实体类Dept以及Dept.xml小配置文件
/* * 部门实体类 */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; } @Override public String toString() { return "Dept [deptNo=" + deptNo + ", deptName=" + deptName + "]"; } }
<!--Dept.xml--><?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.a.entity.Dept"><!-- id:唯一标识:通过此id,程序可唯一锁定一条SQL parameterType:参数类型 resultType:结果类型--> <!-- 查询所有部门信息 --> <select id="selectDept" resultType="cn.a.entity.Dept"> select * from dept </select></mapper>
步骤三:编写mybatis-config.xml大配置文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <environments default="development"> <environment id="development"> <!-- 事务策略是JDBC --> <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="Hibernate" /> <property name="password" value="orcl" /> </dataSource> </environment> </environments> <!--映射文件:描述某个实体和数据库表的对应关系 --> <mappers> <mapper resource="cn/a/entity/Dept.xml" /> </mappers></configuration>
步骤四:编写测试类,查询所有部门信息
SqlSession session; @Before public void before() throws IOException { //1.1构建在Hibernate中的DB Connection的Sessuin对象 //session-->SQLSessionFactory-->SQLSessionFactoryBuilder Reader reader=Resources.getResourceAsReader("mybatis-config.xml"); SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader); session= factory.openSession(); }
/** * 查询所有部门信息 * @throws Exception */ @Test public void selectDeptTest() throws Exception {
//在Dept.xml文件指定了返回值类型为Dept强类型所以用List<Dept>接收 List<Dept> selectList = session.selectList("selectDept"); for (Dept dept : selectList) { System.out.println(dept); } }
运行效果如下:
二.使用MyBatis添加部门,添加deptNo为2,deptName为人力部的部门信息
因为我们上面第一个演示案例不用再重复之前的步骤,只需要将小配置文件修改以及将测试类代码修改即可
Dept.xml文件:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.a.entity.Dept"><!-- id:唯一标识:通过此id,程序可唯一锁定一条SQL parameterType:参数类型 resultType:结果类型--> <!-- 查询所有部门信息 --> <select id="selectDept" resultType="cn.a.entity.Dept"> select * from dept </select> <!-- 添加部门信息 --> <insert id="insertDept" parameterType="cn.a.entity.Dept"> insert into dept values(2,#{deptName}) </insert></mapper>
这里不再使用?占位,而是使用#{deptName}的形式
编写测试类
/** * 添加部门信息 */ @Test public void insertDeptTest() { Dept dept=new Dept(); dept.setDeptName("人力部"); int insert = session.insert("cn.a.entity.Dept.insertDept",dept); System.out.println(insert); session.commit(); }
在DB端的运行结果如下:
三.使用Mybatis修改数据,修改deptNo为2的部门,将deptName修改为测试部
因为我们上面第一个演示案例不用再重复之前的步骤,只需要将小配置文件修改以及将测试类代码修改即可
Dept.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.a.entity.Dept"><!-- id:唯一标识:通过此id,程序可唯一锁定一条SQL parameterType:参数类型 resultType:结果类型--> <!-- 查询所有部门信息 --> <select id="selectDept" resultType="cn.a.entity.Dept"> select * from dept </select> <!-- 添加部门信息 --> <insert id="insertDept" parameterType="cn.a.entity.Dept"> insert into dept values(2,#{deptName}) </insert> <!-- 修改部门信息 --> <update id="updateDept" parameterType="cn.a.entity.Dept"> update dept set deptName=#{deptName} where deptNo=#{deptNo} </update></mapper>
测试类代码
/** * 修改部门 */ @Test public void updateDeptTest() { Dept dept=new Dept(); dept.setDeptNo(2); dept.setDeptName("测试部"); int update = session.update("cn.a.entity.Dept.updateDept",dept); System.out.println(update); session.commit(); }
运行结果如下
四.使用MyBatis删除数据,删除编号为2的部门
因为我们上面第一个演示案例不用再重复之前的步骤,只需要将小配置文件修改以及将测试类代码修改即可
Dept.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.a.entity.Dept"><!-- id:唯一标识:通过此id,程序可唯一锁定一条SQL parameterType:参数类型 resultType:结果类型--> <!-- 查询所有部门信息 --> <select id="selectDept" resultType="cn.a.entity.Dept"> select * from dept </select> <!-- 添加部门信息 --> <insert id="insertDept" parameterType="cn.a.entity.Dept"> insert into dept values(2,#{deptName}) </insert> <!-- 删除部门信息 --> <delete id="deleteDept" parameterType="cn.a.entity.Dept"> delete from dept where deptNo=#{deptNo} </delete> <!-- 修改部门信息 --> <update id="updateDept" parameterType="cn.a.entity.Dept"> update dept set deptName=#{deptName} where deptNo=#{deptNo} </update></mapper>
测试端代码
/** * 删除部门 */ @Test public void deleteDeptTest() { Dept dept=new Dept(); dept.setDeptNo(2); int delete = session.delete("cn.a.entity.Dept.deleteDept",dept); System.out.println(delete); session.commit(); }
运行结果如下
五.模糊查询,查询部门名称带部字的信息
Dept.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.a.entity.Dept"><!-- id:唯一标识:通过此id,程序可唯一锁定一条SQL parameterType:参数类型 resultType:结果类型--> <!-- 查询所有部门信息 --> <select id="selectDept" resultType="cn.a.entity.Dept"> select * from dept </select> <!-- 添加部门信息 --> <insert id="insertDept" parameterType="cn.a.entity.Dept"> insert into dept values(2,#{deptName}) </insert> <!-- 删除部门信息 --> <delete id="deleteDept" parameterType="cn.a.entity.Dept"> delete from dept where deptNo=#{deptNo} </delete> <!-- 修改部门信息 --> <update id="updateDept" parameterType="cn.a.entity.Dept"> update dept set deptName=#{deptName} where deptNo=#{deptNo} </update> <!-- 模糊查询 --> <select id="likeDept" resultType="cn.a.entity.Dept" parameterType="cn.a.entity.Dept"> select * from dept where deptName like ‘%${deptName}%‘ </select></mapper>
这里需要注意like后面跟的‘%${deptName}%‘
测试类代码
/** * 模糊查询 */ @Test public void likeDeptTest() { Dept dept=new Dept(); dept.setDeptName("部"); List<Dept> selectList = session.selectList("cn.a.entity.Dept.likeDept", dept); for (Dept item : selectList) { System.out.println(item); } }
运行结果如下
Mybatis