30.11 The use of dao implementation classes written in MyBatis
package com.xww.dao.impl;
import com.xww.dao.IUserDao;
import com.xww.domain.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import java.util.List;
public class UserDaoImpl implements IUserDao {
private SqlSessionFactory factory;
public UserDaoImpl(SqlSessionFactory factory){
this.factory = factory;
}
public List<User> findAll() {
SqlSession session = factory.openSession();
List<User> users = session.selectList("com.xww.dao.IUserDao.findAll");
session.close();
return users;
}
public void saveUser(User user) {
SqlSession session = factory.openSession();
session.insert("com.xww.dao.IUserDao.saveUser",user);
session.commit();
session.close();
}
public void updateUser(User user) {
SqlSession session = factory.openSession();
session.update("com.xww.dao.IUserDao.updateUser",user);
session.commit();
session.close();
}
public void deleteUser(Integer id) {
SqlSession session = factory.openSession();
session.update("com.xww.dao.IUserDao.deleteUser",);
session.commit();
session.close();
}
public User findById(Integer id) {
SqlSession session = factory.openSession();
User user = session.selectOne("com.xww.dao.IUserDao.findById",id);
session.close();
return user;
}
public List<User> findByName(String username) {
SqlSession session = factory.openSession();
List<User> users = session.selectList("com.xww.dao.IUserDao.findByName",username);
session.close();
return users;
}
public int findTotal() {
SqlSession session = factory.openSession();
Integer count = session.selectOne("com.xww.dao.IUserDao.findTotal");
session.close();
return count;
}
}
package com.xww.test;
import com.xww.dao.IUserDao;
import com.xww.dao.impl.UserDaoImpl;
import com.xww.domain.QueryVo;
import com.xww.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
public class MybatisTest {
private InputStream in;
private IUserDao userDao;
@Before
public void init()throws Exception{
in = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
userDao = new UserDaoImpl(factory);
}
@After
public void destroy()throws Exception{
in.close();
}
@Test
public void testFindAll(){
List<User> users = userDao.findAll();
for(User user : users){
System.out.println(user);
}
}
@Test
public void testSave(){
User user = new User();
user.setUsername("dd");
user.setAddress("上海");
user.setSex("男");
user.setBirthday(new Date());
System.out.println("保存操作之前:"+user);
userDao.saveUser(user);
System.out.println("保存操作之后:"+user);
}
@Test
public void testUpdate(){
User user = new User();
user.setId(50);
user.setUsername("fr");
user.setAddress("fa");
user.setSex("女");
user.setBirthday(new Date());
userDao.updateUser(user);
}
@Test
public void testDelete(){
userDao.deleteUser(54);
}
@Test
public void testFindOne(){
User user = userDao.findById(50);
System.out.println(user);
}
@Test
public void testFindByName(){
List<User> users = userDao.findByName("%王%");
for(User user : users){
System.out.println(user);
}
}
@Test
public void testFindTotal(){
int count = userDao.findTotal();
System.out.println(count);
}
}
30.12 Analysis of the execution process of the dao implementation class in MyBatis
30.13 Analysis of the execution process of using proxy dao in MyBatis
30.14 Use and details of properties
<?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">
<configuration>
<properties url="file:///D:/项目_间接/idea_间接/code_mybatis/day30_mybatisDao/src/main/resources/jdbcConfig.properties">
</properties>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="com.xww.dao.IUserDao"/>
</mappers>
</configuration>
30.15 typeAliases label and package label
<typeAliases>
<package name="com.itheima.domain"></package>
</typeAliases>
<mappers>
<package name="com.itheima.dao"></package>
</mappers>