1.mybatis实现增删改查
测试
1.1pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.items</groupId>
<artifactId>day01_easy01_mybastis</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</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.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
1.2连接数据库配置文件
<?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">
<!--mybatis的主配置文件-->
<configuration>
<!-- 配置环境-->
<environments default="mysql">
<!-- 配置mysql环境-->
<environment id="mysql">
<!-- 配置事物的类型 -->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源(连接池)-->
<dataSource type="POOLED">
<!--配置数据库的4个基本类型-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test2"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--指定映射文件的位置,映射文件指的是每个dao独立文件配置-->
<mappers>
<mapper resource="com/lzy/dao/IUserDao.xml"/>
</mappers>
</configuration>
1.3log4j.properties配置文件
log4j.rootLogger=debug,stdout,logfile
### 把日志信息输出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
### 把日志信息输出到文件:jbit.log ###
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=jbit.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n
###显示SQL语句部分
log4j.logger.com.mybatis=DEBUG
log4j.logger.com.mybatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.mybatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.mybatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
2.IUserDao接口
package com.lzy.domain.dao;
import com.lzy.domain.user.QueryVo;
import com.lzy.domain.user.User;
import javax.management.Query;
import java.util.List;
/**
* 用户持久层接口
*/
public interface IUserDao {
/**
* 查询所有
* @return
*/
List<User> findAll();
/**
* 保存用户方法
*/
void saveUser(User user);
/**
* 查找一个用户方法
* @return
*/
User savefindByid(int id);
/**
* 更新用户
*/
void saveUpdateByid(User user);
/**
* 根据ID删除用户信息
*/
void saveDeteleByid(int id);
/**
* 根据名称查看注解
*/
List<User> findByname(String name);
/**
* 查询总用户数
* @return
*/
int findTotal();
/**
* 更具queryvo中的查询条件查询用户
* @param vo
*/
//list<user>作为返回值参数
List<User> findByquery(QueryVo vo);
}
2.1IUserDao.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">
<mapper namespace="com.lzy.domain.dao.IUserDao">
<!-- SQL语句 -->
<!-- 配置查询所有-->
<select id="findAll" resultType="com.lzy.domain.user.User">
select * from product;
</select>
<!--保存用户信息-->
<insert id="saveUser" parameterType="com.lzy.domain.user.User">
<!--配置插入插入操作后,获取插入数据的id-->
<selectKey keyProperty="id" resultType="int" keyColumn="id" order="AFTER">
select last_insert_id();
</selectKey>
insert into product(number,name,type,count,price)value(#{number},#{name},#{type},#{count},#{price})
</insert>
<!--更具id查找用户信息-->
<select id="savefindByid" parameterType="int" resultType="com.lzy.domain.user.User">
select * from product where id=#{uid}
</select>
<!--更新用户信息-->
<update id="saveUpdateByid" parameterType="com.lzy.domain.user.User">
update product set number=#{number},name=#{name},type=#{type},count=#{count},price=#{price} where id=#{id}
</update>
<!--删除用户信息-->
<delete id="saveDeteleByid" parameterType="int">
delete from product where id=#{uid}
</delete>
<!--根据名称模糊查询的方法-->`在这里插入代码片`
<select id="findByname" parameterType="string" resultType="com.lzy.domain.user.User">
select * from product where name like #{name}
</select>
<!--获取用户总记录条条数-->
<select id="findTotal" resultType="int">
select count(id) from user ;
</select>
<!--更具Queryvo的条件查询用户-->
<select id="findByquery" parameterType="string" resultType="com.lzy.domain.user.QueryVo">
select * from product where name like #{user.name}
</select>
</mapper>
2.2测试实现方法
package com.lzy.test;
import com.lzy.domain.user.QueryVo;
import com.lzy.domain.user.User;
import com.lzy.domain.dao.IUserDao;
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;
/**
* @yong
* mybatis入门案列
*/
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工厂
// SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(in);
//3.使用工厂生产一个SqlSession对象
sqlSession = factory.openSession();
//4.使用SqlSession创建userDao接口的代理对象
userDao= sqlSession.getMapper(IUserDao.class);
}
@After//用在测试方法之后
public void destory() throws Exception{
//6.释放资源
sqlSession.close();
in.close();
}
/**
* 入门案列
* @param
*/
@Test
public void testAllfind(){
// //1.读取配置文件
// InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
// //2.创建SqlSessionFactory工厂
// SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
// SqlSessionFactory factory= builder.build(in);
// //3.使用工厂生产一个SqlSession对象
// SqlSession session = factory.openSession();
// //4.使用SqlSession创建Dao接口的代理对象
// IUserDao userDao= session.getMapper(IUserDao.class);
//5.使用代理对象执行方法
List<User> users =userDao.findAll();
for (User user:users){
System.out.println(user);
}
}
/**
* 测试保存操作
*/
@Test
public void testSave(){
User user = new User();
user.setNumber("21");
user.setName("水杯");
user.setType("家具");
user.setCount(21);
user.setPrice(22);
System.out.println("保存之前"+user);
//保存执行方法
userDao.saveUser(user);
//提交事务
sqlSession.commit();
System.out.println("保存之后:"+user);
}
/**
* 查找id信息
*/
@Test
public void testFindOne(){
//测试查询一个方法
User user =userDao.savefindByid(1);
System.out.println(user);
}
/**
* 测试更新操作
*/
public void testUpdate(){
User user = new User();
user.setId(1);
user.setNumber("20");
user.setName("袋子");
user.setType("工具");
user.setCount(21);
user.setPrice(222);
//保存执行方法
userDao.saveUpdateByid(user);
//提交事务
sqlSession.commit();
}
/**
* 测试删除
*/
public void testDelete(){
//测试删除2号id
userDao.saveDeteleByid(2);
}
/**
* 测试模糊查询
*/
@Test
public void testFindByname(){
//执行查询一个方法
List<User> users = userDao.findByname("%电%");
for (User user :users){
System.out.println(user);
}
}
/**
* 测试查询总记录条数
*/
public void testFindTotal(){
//执行查询一个方法
int count =userDao.findTotal();
userDao.saveDeteleByid(count);
}
/**
* 测试使用Queryvo测试查询
*/
@Test
public void testFindByQuervo(){
QueryVo vo = new QueryVo();
User user= new User();
user.setName("%电%");
vo.setUser(user);
//执行查询一个方法
List<User> users = userDao.findByquery(vo);
for (User user1 :users){
System.out.println(user1);
}
}
}