Mybatis 学习内容
搭建环境
加入依赖架包
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
创建实体类
private Integer deptId;
private String deptName;
创建VO类
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
创建接口
package com.yang.dao;
import com.yang.domain.QueryVo;
import com.yang.domain.User;
import java.util.List;
/**
*
-
用户的持久层接口
*/
public interface IUserDao {/**
- 查询所有用户
- @return
*/
List findAll();
/**
- 保存用户
- @param user
*/
void saveUser(User user);
/**
- 更新用户
- @param user
*/
void updateUser(User user);
/**
- 根据Id删除用户
- @param userId
*/
void deleteUser(Integer userId);
/**
- 根据id查询用户信息
- @param userId
- @return
*/
User findById(Integer userId);
/**
- 根据名称模糊查询用户信息
- @param username
- @return
*/
List findByName(String username);
/**
- 查询总用户数
- @return
*/
int findTotal();
/**
- 根据queryVo中的条件查询用户
- @param vo
- @return
*/
List findUserByVo(QueryVo vo);
}
配置SqlMapConfig.xml文件相关信息
<?xml version="1.0" encoding="UTF-8"?></mappers>
配置log4j.properties文件 # Set root category priority to INFO and its only appender to CONSOLE. #log4j.rootCategory=INFO, CONSOLE debug info warn error fatal log4j.rootCategory=debug, CONSOLE, LOGFILE
Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
配置IUserDao.xml文件
<!-- 配置 查询结果的列名和实体类的属性名的对应关系 -->
<resultMap id="userMap" type="uSeR">
<!-- 主键字段的对应 -->
<id property="deptId" column="dept_id"></id>
<!--非主键字段的对应-->
<result property="deptName" column="dept_name"></result>
</resultMap>
<!-- 查询所有 -->
<select id="findAll" resultMap="userMap">
<!--select id as userId,username as userName,address as userAddress,sex as userSex,birthday as userBirthday from user;-->
select * from tbl_dept;
</select>
<!-- 保存用户 -->
<insert id="saveUser" parameterType="user">
<!-- 配置插入操作后,获取插入数据的id
keyProperty 实体类的id
-->
<selectKey keyProperty="deptId" keyColumn="dept_id" resultType="int" order="AFTER">
select last_insert_id();
</selectKey>
insert into tbl_dept(dept_name)values(#{deptName});
</insert>
<!-- 更新用户 -->
<update id="updateUser" parameterType="USER">
update tbl_dept set dept_name=#{deptName} where dept_id=#{deptId}
</update>
<!-- 删除用户-->
<delete id="deleteUser" parameterType="java.lang.Integer">
delete from tbl_dept where dept_id = #{deptId}
</delete>
<!-- 根据id查询用户 -->
<select id="findById" parameterType="INT" resultMap="userMap">
select * from tbl_dept where dept_id = #{deptId}
</select>
<!-- 根据名称模糊查询 -->
<select id="findByName" parameterType="string" resultMap="userMap">
select * from tbl_dept where dept_name like #{deptName}
<!-- select * from user where username like '%${value}%'-->
<!-- 获取用户的总记录条数 -->
<select id="findTotal" resultType="int">
select count(dept_id) from tbl_dept;
</select>
<!-- 根据queryVo的条件查询用户 -->
<select id="findUserByVo" parameterType="com.yang.domain.QueryVo" resultMap="userMap">
select * from tbl_dept where dept_name like #{user.deptName}
</select>
测试类
package com.yang.test.test;
import com.yang.dao.IUserDao;
import com.yang.domain.QueryVo;
import com.yang.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.List;
public class MybatisTest {
private InputStream in;
private SqlSession sqlSession;
private IUserDao userDao;
@Before//用于在测试方法执行之前执行
public void init()throws Exception{
//1.读取配置文件,生成字节输入流
in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.获取SqlSessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3.获取SqlSession对象
sqlSession = factory.openSession();
//4.获取dao的代理对象
userDao = sqlSession.getMapper(IUserDao.class);
}
@After//用于在测试方法执行之后执行
public void destroy()throws Exception{
//提交事务
sqlSession.commit();
//6.释放资源
sqlSession.close();
in.close();
}
/**
* 测试查询所有
*/
@Test
public void testFindAll(){
//5.执行查询所有方法
List<User> users = userDao.findAll();
for(User user : users){
System.out.println(user);
}
}
/**
* 测试保存操作
*/
@Test
public void testSave(){
User user = new User();
user.setDeptName("modify User property");
System.out.println("保存操作之前:"+user);
//5.执行保存方法
userDao.saveUser(user);
System.out.println("保存操作之后:"+user);
}
/**
* 测试更新操作
*/
@Test
public void testUpdate(){
User user = new User();
user.setDeptId(2);
user.setDeptName("update user");
//5.执行保存方法
userDao.updateUser(user);
}
//
/**
* 测试删除操作
*/
@Test
public void testDelete(){
//5.执行删除方法
userDao.deleteUser(5);
}
/**
*
*/
@Test
public void testFindOne(){
//5.执行查询一个方法
User user = userDao.findById(2);
System.out.println(user);
}
/**
* 测试模糊查询操作
*/
@Test
public void testFindByName(){
//5.执行查询一个方法
List<User> users = userDao.findByName("%m%");
// List users = userDao.findByName(“王”);
for(User user : users){
System.out.println(user);
}
}
/**
* 测试查询总记录条数
*/
@Test
public void testFindTotal(){
//5.执行查询一个方法
int count = userDao.findTotal();
System.out.println(count);
}
/**
* 测试使用QueryVo作为查询条件
*/
@Test
public void testFindByVo(){
QueryVo vo = new QueryVo();
User user = new User();
user.setDeptName("%m%");
vo.setUser(user);
//5.执行查询一个方法
List<User> users = userDao.findUserByVo(vo);
for(User u : users){
System.out.println(u);
}
}
}
喜欢的点个赞有什么问题评论下,这是对我莫大的支持