mybatis深入浅出之原始Dao开发

结合上一篇文章《mybatis深入浅出之增删改查》:https://blog.csdn.net/weixin_41477980/article/details/86593696和《SqlSession、SqlSessionFactory、SqlSessionFactoryBuilder使用时的注意事项》:https://blog.csdn.net/weixin_41477980/article/details/86594550继续深入浅出的学习mybatis。

原始Dao开发方法需要编写Dao接口和Dao实现类。

1.编写user.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">

<!-- namespace:命名空间,用于隔离sql-->

<mapper namespace="test">

<!-- 根据id查询用户 -->

<select id="queryUserById" parameterType="int"

resultType="cn.mybatis.pojo.User">

select * from user where id = #{id}

</select>

<!-- 根据username模糊查询用户 -->

<select id="queryUserByUsername" parameterType="string"

resultType="cn.mybatis.pojo.User">

select * from user where username like '%${value}%'

</select>

<!-- 保存用户 -->

<insert id="saveUser" parameterType="cn.mybatis.pojo.User">

insert into user(username,birthday,sex,address)

values(#{username},#{birthday},#{sex},#{address})

</insert>

</mapper>

2.DAO接口开发

public interface UserDao {

 // 根据id查询用户

User queryUserById(int id);

// 根据用户名模糊查询用户

List<User> queryUserByUsername(String username);

 //保存用户

void saveUser(User user);

}

3.Dao实现类开发

public class UserDaoImpl implements UserDao {

private SqlSessionFactory sqlSessionFactory;

public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {

super();

this.sqlSessionFactory = sqlSessionFactory;

}

@Override

public User queryUserById(int id) {

// 创建SqlSession

SqlSession sqlSession = this.sqlSessionFactory.openSession();

// 执行查询逻辑

User user = sqlSession.selectOne("queryUserById", id);

// 释放资源

sqlSession.close();

return user;

}

@Override

public List<User> queryUserByUsername(String username) {

// 创建SqlSession

SqlSession sqlSession = this.sqlSessionFactory.openSession();

// 执行查询逻辑

List<User> list = sqlSession.selectList("queryUserByUsername", username);

// 释放资源

sqlSession.close();

return list;

}

@Override

public void saveUser(User user) {

// 创建SqlSession

SqlSession sqlSession = this.sqlSessionFactory.openSession();

// 执行保存逻辑

sqlSession.insert("saveUser", user);

// 提交事务

sqlSession.commit();

// 释放资源

sqlSession.close();

}}

4.JUnit的测试类开发,对UserDao进行测试

public class UserDaoTest {

private SqlSessionFactory sqlSessionFactory;

@Before

public void init() throws Exception {

// 创建SqlSessionFactoryBuilder

SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

// 加载SqlMapConfig.xml配置文件

InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");

// 创建SqlsessionFactory

this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);

}

@Test

public void testQueryUserById() {

// 创建DAO

UserDao userDao = new UserDaoImpl(this.sqlSessionFactory);

// 执行查询

User user = userDao.queryUserById(1);

System.out.println(user);

}

@Test

public void testQueryUserByUsername() {

// 创建DAO

UserDao userDao = new UserDaoImpl(this.sqlSessionFactory);

// 执行查询

List<User> list = userDao.queryUserByUsername("张");

for (User user : list) {

System.out.println(user);

}}

@Test

public void testSaveUser() {

// 创建DAO

UserDao userDao = new UserDaoImpl(this.sqlSessionFactory);

// 创建保存对象

User user = new User();

user.setUsername("刘备");

user.setBirthday(new Date());

user.setSex("1");

user.setAddress("蜀国");

// 执行保存

userDao.saveUser(user);

System.out.println(user);

}}

猜你喜欢

转载自blog.csdn.net/weixin_41477980/article/details/86594911