UserMapper .java接口类
package com.ygkj.dao;
import com.ygkj.pojo.QueryDto;
import com.ygkj.pojo.User;
import java.util.List;
public interface UserMapper {
List<User> findAll();
void addUser(User user);
void updateUser(User user);
void deleteUser(int id);
User findUserById(int id);
int selectCount();
List<User> selectLikeByName(String likename);
List<User> findByUser(QueryDto queryDto);
}
QueryDto .java(封装了User类的一个封装类)
package com.ygkj.pojo;
public class QueryDto {
private User user;
public QueryDto(User user) {
this.user = user;
}
public QueryDto() {
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return "QueryDto{" +
"user=" + user +
'}';
}
}
User .java
package com.ygkj.pojo;
public class User {
private Integer id;
private String userName;
private String passWord;
public User(Integer id, String userName, String passWord) {
this.id = id;
this.userName = userName;
this.passWord = passWord;
}
public User() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", passWord='" + passWord + '\'' +
'}';
}
}
UserMapper.xml(与UserMapper在resource同级目录下)
<?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 代表的是命名空间-->
<mapper namespace="com.ygkj.dao.UserMapper">
<!-- 数据库的列名colum 和属性名(实体类对应的) -->
<!-- <resultMap id="userVo" type="com.ygkj.pojo.User">-->
<!-- <!–主键字段的对应–>-->
<!-- <id property="bid" column="id"></id>-->
<!-- <!–非主键字段的对应–>-->
<!-- <result property="userName" column="username"/>-->
<!-- <result property="passWord" column="password"/>-->
<!-- </resultMap>-->
<!-- <select id="findAll" resultMap="userVo">-->
<!-- select *from tb_user;-->
<!-- </select>-->
<select id="findAll" resultType="com.ygkj.pojo.User">
select *from tb_user;
</select>
<!-- 添加-->
<!-- parameterType接收值的类型-->
<!-- select LAST_INSERT_ID(); 在添加语句执行完之后执行 返回添加的主键id-->
<!--keyProperty实体类中的id keyColumn数据库中对应的id order执行完添加语句之前还是之后执行-->
<insert id="addUser" parameterType="com.ygkj.pojo.User">
<selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
select LAST_INSERT_ID();
</selectKey>
insert into tb_user(username,password) values (
#{userName},#{passWord}
)
</insert>
<!-- 修改-->
<update id="updateUser" parameterType="com.ygkj.pojo.User">
update tb_user set username=#{userName},password=#{passWord}
where id=#{id}
</update>
<!-- 删除-->
<delete id="deleteUser" parameterType="int">
delete from tb_user where id=#{id}
</delete>
<!-- 工具id查询数据-->
<select id="findUserById" parameterType="int" resultType="com.ygkj.pojo.User">
select *from tb_user where id=#{id}
</select>
<!--查询数据库的总记录条数-->
<select id="selectCount" resultType="int">
select count(id) from tb_user
</select>
<!--查询数据库的总记录条数-->
<!--'%${value}%'没有预编译sql的过程 会导致sql注入 不建议使用-->
<select id="selectLikeByName" resultType="com.ygkj.pojo.User" parameterType="String" >
select *from tb_user where username like #{likename}
-- select *from tb_user where username like '%${value}%'
</select>
<!--实体类嵌套实体类查询 -->
<select id="findByUser" parameterType="com.ygkj.pojo.QueryDto" resultType="com.ygkj.pojo.User">
select *from tb_user where id=#{user.id}
</select>
</mapper>
<?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">
<environment id="mysql">
<!--配置实务相关信息-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源信息( 数据库连接池)-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/test01?characterEncoding=utf-8"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</dataSource>
</environment>
</environments>
<!--映射器-->
<mappers>
<mapper resource="com/ygkj/dao/UserMapper.xml"></mapper>
</mappers>
</configuration>
SqlMapperConfig(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">
<!--mybatis中的核心配置文件-->
<configuration>
<environments default="mysql">
<environment id="mysql">
<!--配置实务相关信息-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源信息( 数据库连接池)-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/test01?characterEncoding=utf-8"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</dataSource>
</environment>
</environments>
<!--映射器-->
<mappers>
<mapper resource="com/ygkj/dao/UserMapper.xml"></mapper>
</mappers>
</configuration>
pom.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>com.ygkj</groupId>
<artifactId>mybatis_01</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.28</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>junit</groupId>-->
<!-- <artifactId>junit-dep</artifactId>-->
<!-- <version>4.11</version>-->
<!-- <scope>test</scope>-->
<!-- </dependency>-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
MyBatisTest .java 测试类
package com.ygkj.test;
import com.ygkj.dao.UserMapper;
import com.ygkj.pojo.QueryDto;
import com.ygkj.pojo.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.jupiter.api.*;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class MyBatisTest {
InputStream resourceAsStream=null;
SqlSession sqlSession=null;
UserMapper userMapper=null;
@BeforeEach
public void befores() throws IOException {
resourceAsStream = Resources.getResourceAsStream("SqlMapperConfig");
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = sqlSessionFactoryBuilder.build(resourceAsStream);
sqlSession = factory.openSession();
userMapper = sqlSession.getMapper(UserMapper.class);
}
@AfterEach
public void afters() throws IOException {
sqlSession.commit();
resourceAsStream.close();
sqlSession.close();
}
@Test
public void test01(){
List<User> userList = userMapper.findAll();
for (User user : userList) {
System.out.println(user.toString());
}
}
@Test
public void test02(){
User user = new User();
user.setPassWord("ddd");
user.setUserName("ddd");
System.out.println(user);
userMapper.addUser(user);
System.out.println(user);
}
@Test
public void test03(){
User user = new User();
user.setId(5);
user.setPassWord("bbb");
user.setUserName("aaa");
userMapper.updateUser(user);
}
@Test
public void test04(){
userMapper.deleteUser(5);
}
@Test
public void test05(){
User userById = userMapper.findUserById(1);
System.out.println(userById);
}
@Test
public void test06(){
int i = userMapper.selectCount();
System.out.println(i);
}
@Test
public void test07(){
List<User> userList = userMapper.selectLikeByName("%张%");
for (User user : userList) {
System.out.println(user.toString());
}
}
@Test
public void test08(){
QueryDto queryDto = new QueryDto();
User user = new User();
user.setId(1);
queryDto.setUser(user);
List<User> byUser = userMapper.findByUser(queryDto);
System.out.println(byUser);
}
}
整体框架
