xml形式的增删改查
这里感觉没啥好讲的,照着代码自己敲一遍、认真再看看应该都懂的。
Maven工程坐标
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>org.example</groupId>
<artifactId>Mybatis02</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
</dependencies>
</project>
dao接口
package com.dao;
import com.domain.User;
import java.util.List;
public interface UserDao {
/**
* 普通查询操作
* @return
*/
List<User>findAll();
/**
* 增添操作
* @param user
*/
void addUser(User user);
/**
* 根据产品类型删除
* @param type
*/
void deleteUserByType(String type);
/**
* 修改用户信息
* @param user
*/
void updateUser(User user);
/**
* 模糊查询操作
* @return
*/
List<User>findByType(String user);
}
实现类
package com.domain;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
private String product_name;
private String product_type;
private int product_price;
private Date regist_date;
public String getProduct_name() {
return product_name;
}
public void setProduct_name(String product_name) {
this.product_name = product_name;
}
public String getProduct_type() {
return product_type;
}
public void setProduct_type(String product_type) {
this.product_type = product_type;
}
public int getProduct_price() {
return product_price;
}
public void setProduct_price(int product_price) {
this.product_price = product_price;
}
public Date getRegist_date() {
return regist_date;
}
public void setRegist_date(Date regist_date) {
this.regist_date = regist_date;
}
@Override
public String toString() {
return "User{" +
"product_name='" + product_name + '\'' +
", product_type='" + product_type + '\'' +
", product_price=" + product_price +
", regist_date=" + regist_date +
'}';
}
}
Mybatis主配置文件
<?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>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/study"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/dao/IUserDao.xml"></mapper>
</mappers>
</configuration>
映射配置文件
<?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.dao.UserDao">
<!--查询-->
<select id="findAll" resultType="com.domain.User">
select * from product
</select>
<!--增添-->
<insert id="addUser" parameterType="com.domain.User">
insert into product(product_name,product_type,product_price,regist_date) value (#{product_name},#{product_type},#{product_price},#{regist_date})
</insert>
<!--删除-->
<delete id="deleteUserByType" parameterType="String">
delete from product where product_type=#{product_type}
</delete>
<!--修改-->
<update id="updateUser" parameterType="com.domain.User">
update product set product_name=#{product_name},product_price=#{product_price},regist_date=#{regist_date} where product_type=#{product_type}
</update>
<select id="findByType" parameterType="String" resultType="com.domain.User">
select * from product where product_type like #{product_type}
</select>
</mapper>
测试类
package com.test;
import com.dao.UserDao;
import com.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.text.SimpleDateFormat;
import java.util.List;
public class MybatisTest {
private static UserDao userDao;
private static SqlSession session;
private static InputStream inputStream;
@Before
public void test() throws Exception{
inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(inputStream);
session = factory.openSession();
userDao = session.getMapper(UserDao.class);
}
@Test
public void testFindAll(){ //普通查询操作
List<User>users = userDao.findAll();
for (User user:users){
System.out.println(user);
}
}
@Test
public void testAddUser(){ //增添操作
User user = new User();
user.setProduct_name("竖笛");
user.setProduct_type("乐器");
user.setProduct_price(3000);
try{
user.setRegist_date(new SimpleDateFormat("yyyy-MM-dd").parse("2020-7-16"));
}catch (Exception e){
e.printStackTrace();
}
userDao.addUser(user);
session.commit(); //对表格进行修改操作(增删改)时必须得提交事务,否则表格不会保存修改
// 若没有写session.commit();则更新的数据没有进行更新
// 进行add和update必须进行session.commit();
}
@Test
public void testDelete(){ //删除操作
userDao.deleteUserByType("乐器");
session.commit(); //对表格进行修改操作(增删改)时必须得提交事务,否则表格不会保存修改
}
@Test
public void testUpdate(){ //修改操作
User user = new User();
user.setProduct_type("乐器");
user.setProduct_name("吉他");
user.setProduct_price(10000);
try{
user.setRegist_date(new SimpleDateFormat("yyyy-MM-dd").parse("2020-7-16"));
}catch (Exception e){
e.printStackTrace();
}
userDao.updateUser(user);
session.commit(); //对表格进行修改操作(增删改)时必须得提交事务,否则表格不会保存修改
}
@Test
public void testFindByType(){ //模糊查询操作
List<User>userList = userDao.findByType("%用品%");
for (User user:userList){
System.out.println(user);
}
}
@After
public void destroy() throws Exception{ //资源关闭操作
session.close();
inputStream.close();
}
运行结果