MyBatis的Dao开发模式

Posted 大师兄丶2K

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis的Dao开发模式相关的知识,希望对你有一定的参考价值。

MyBatis的Dao开发模式,先来一个例子

1.User.java 实体类以及

SqlMapConfig.xml配置文件

,见上一篇文章

2.UserDao.java接口

 1 package com.test.dao;
 2 
 3 import com.test.entity.User;
 4 
 5 /**
 6  * 
 7  * @author Mr
 8  * dao模式1  例子
 9  */
10 public interface UserDao {
11     //根据id查找用户
12     public User findUserById(int id);
13     //添加数据到数据库
14     public void insertUser(User user);
15     //删除一条数据  根据id删除
16     public void deleteUser(int id);
17 }

3.UserDaoImpl.java接口的实现类

 1 package com.test.dao.impl;
 2 
 3 import org.apache.ibatis.session.SqlSession;
 4 import org.apache.ibatis.session.SqlSessionFactory;
 5 
 6 import com.test.dao.UserDao;
 7 import com.test.entity.User;
 8 /**
 9  * 
10  * @author Mr
11  * 接口的实现类
12  */
13 public class UserDaoImpl implements UserDao{
14     //工厂私有化
15     private SqlSessionFactory sqlSessionFactory;
16     //添加带参的构造方法
17     public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
18         this.sqlSessionFactory = sqlSessionFactory;
19     }
20 
21     @Override
22     public User findUserById(int id) {
23         //获取数据库操作对象
24         SqlSession sqlSession = sqlSessionFactory.openSession();
25         //操作数据库  通过selectOne获取一条记录
26         User user = sqlSession.selectOne("test.findUserById", id);
27         //关闭连接  释放资源
28         sqlSession.close();
29         return user;
30     }
31 
32     @Override
33     public void insertUser(User user) {
34         //获取数据库操作对象
35         SqlSession sqlSession = sqlSessionFactory.openSession();
36         //使用insert 添加数据
37         sqlSession.insert("test.insertUser", user);
38         //提交事务
39         sqlSession.commit();
40         //释放资源
41         sqlSession.close();
42         
43     }
44 
45     @Override
46     public void deleteUser(int id) {
47         //获取数据库操作对象
48         SqlSession sqlSession = sqlSessionFactory.openSession();
49         //删除一条记录
50         sqlSession.delete("test.delUserById", id);
51         //提交事务
52         sqlSession.commit();
53         //释放资源
54         sqlSession.close();
55         
56     }
57 
58 }

4.User.xml配置文件

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <!-- namespace命名空间,为了对sql语句进行隔离,方便管理 ,mapper开发dao方式,使用namespace有特殊作用 -->
 6 <mapper namespace="test">
 7 <!-- 这里可以配置多个sql
 8     根据用户的id查询
 9     通过select进行查询
10         select * from userss WHERE ID=#{id} 从plsql中测试完成复制过来
11     parameterType 指定输入参数的类型 这里是int
12     #{} 表示占位符
13     #{id} 其中的id表示输入参数,参数的名称是id,如果输入参数是简单类型,可以使用#{}
14     resultType 指定sql语句输出结果的类型,我们这里是Java对象
15  -->
16  <select id="findUserById" parameterType="int" resultType="com.test.entity.User">
17      select * from userss WHERE ID=#{id}
18  </select>
19  
20  <!-- 根据姓名模糊查询 -->
21  <select id="findUserByName" parameterType="java.lang.String" resultType="com.test.entity.User">
22      select * from userss WHERE username LIKE ‘%${value}%‘
23  </select>
24  <!-- 添加用户 -->
25  <insert id="insertUser" parameterType="com.test.entity.User">
26      insert into userss values(seq_users_id.nextval,#{username},#{birthday},#{sex},#{address})
27  </insert>
28  <!-- 删除用户 -->
29  <delete id="delUserById" parameterType="java.lang.Integer">
30      DELETE userss WHERE ID=#{id}
31  </delete>
32  <!-- 更新 -->
33  <update id="upUser" parameterType="com.test.entity.User">
34      UPDATE userss SET username=#{username},address=#{address} WHERE ID=#{id}
35  </update>
36 
37 </mapper>

5.Test.java测试类

 1 package com.test.demo;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 
 6 import org.apache.ibatis.io.Resources;
 7 import org.apache.ibatis.session.SqlSessionFactory;
 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 9 
10 import com.test.dao.UserDao;
11 import com.test.dao.impl.UserDaoImpl;
12 import com.test.entity.User;
13 
14 /**
15  * 
16  * @author Mr
17  * 测试dao开发模式
18  */
19 public class Test2 {
20 
21     public static void main(String[] args) {
22         try {
23             //mybatis核心配置文件
24             String resource = "SqlMapConfig.xml";
25             //读取配置文件
26             InputStream config = Resources.getResourceAsStream(resource);
27             //获取sqlSessionFactory工厂
28             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(config);
29             //创建对象工厂传递到impl类种
30             UserDao udao = new UserDaoImpl(sqlSessionFactory);
31             User user = udao.findUserById(31);
32             System.out.println(user);
33         } catch (IOException e) {
34             // TODO Auto-generated catch block
35             e.printStackTrace();
36         }
37 
38     }
39 
40 }

 

以上是关于MyBatis的Dao开发模式的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis——Dao层开发总结

MyBatis——Dao层开发总结

Mybatis使用Mapper代理模式开发

Mybatis使用Mapper代理模式开发

Spring+SpringMVC+MyBatis深入学习及搭建——MyBatis原始Dao开发和mapper代理开发

springboot启动mybatis