今日内容: mybatis 数据持久层的一种表现, 在一定程度上, 取代了 jdbc.
1. 建 maven......
在 pom.xml 中进行配置, 添加 mabatis 包, junit 测试 jar 包, 添加连接 mysql 的数据库包
2. 在 resources 中配置 SqlMapperConfig.xml 文件, 它的作用是配置数据库连接相关信息, 主要用于数据库中不变的信息, 另外里面有个 mappers 标签, 再里面有个 userMapper.xml, 里面可以有多个表.
3.userMapper.xml 主要用于一些变化的信息, 主要是操作信息, 如增删改查.
4. 建库建表.
5. 建一个 bean 包, 依据数据库中的表的字段来定义对应属性的类 (实体类), 用于存储数据库中的内容.
6. 建一个 dao 包, 定义个接口 UserDao, 里面定义了一些抽象方法, 主要是增删改查等.
- package cn.tedu.dao;
- /** 在 UserDao 接口中定义方法 */
- import java.util.List;
- import cn.tedu.bean.User;
- public interface UserDao{
- void insertUser(User user);
- void updateUser(User user);
- void deleteUserById(Integer id);// 删除对象依据 id
- User selectUserById(Integer id);// 查询对象依据 id 返回值为 User 类数据类型
- List<User> selectAll();// 查询所有集合对象记录里所有的数据
- }
7. 同时在 dao 包中, 定义一个实现 UserDaoImpl 类, 里面主要是实现类, 实现接口中的抽象方法, 如
- public class UserDaoImpl implements UserDao{
- public void insertUser(User user) {
- //sqlSession(有点类似 Connection)
- SqlSession session=SqlSessionUtil.getSession();// 去工厂拿
- session.insert("userDao.addUser",user);// 找到固定节点并插入值 (记录对象)
- session.commit();// 手动提交
- session.close();// 结束 session 会话
- }
- }
8. 其中的共有的, 不变的部分抽出来了, 并用 static 修饰, 即当类被加载时就可以
执行.
- // 等价于 DBUtils
- package cn.tedu.util;
- import java.io.InputStream;
- import org.apache.ibatis.session.SqlSession;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.apache.ibatis.session.SqlSessionFactoryBuilder;
- import cn.tedu.dao.UserDaoImpl;
- public class SqlSessionUtil {
- private static SqlSessionFactory ssf;
- static {
- // 读配置文件
- InputStream in=UserDaoImpl.class.getClassLoader().getResourceAsStream("SqlMapperConfig.xml");
- //SqlSessionFactory
- ssf=new SqlSessionFactoryBuilder().build(in);//??10:52
- }
- // 返回 sqlSession 对象
- public static SqlSession getSession() {
- return ssf.openSession();
- }
- }
- ------------------------------------------------------------------------------------------------------
- package test;
- import org.junit.Test;
- import cn.tedu.bean.User;
- import cn.tedu.dao.UserDao;
- import cn.tedu.dao.UserDaoImpl;
- public class TestUser {
- @Test
- public void testInsert() {
- UserDao userDao=new UserDaoImpl();
- User user=new User();
- user.setUsername("张三");
- user.setPassword("146557");
- user.setEmail("zhangsan@tedu.cn");
- user.setPhone("153646646");
- userDao.insertUser(user);
- }
- }
- // 单元测试, 写一点测试一点, 不建议所有的都到最后再测试.
- // 多练习
- // 另外还有一种方法不用写实现类, mybatis 框架自动添加
- ##6. 测试类中
- public void testInsert(){
- SqlSession session =
- SqlSessionUitl.getSession();
- // 通过 getMapper 获取 AddressDao 的实现类对象
- AddressDao addressDao =
- session.getMapper(AddressDao.class);
- //namespace.id
- Address address = new Address();
- address.setProvince("北京市");
- address.setCity("市辖区");
- address.setArea("海淀区");
- address.setUserAddress("中鼎大厦 7 层 1 教室");
- addressDao.insert(address);
- // 提交事务
- session.commit();
- // 关闭 session
- session.close();
- }
来源: http://www.bubuko.com/infodetail-2737073.html