文章目录
UserMapper .java接口类QueryDto .java(封装了User类的一个封装类)User .javaUserMapper.xml(与UserMapper在resource同级目录下)SqlMapperConfig(Mybatis配置)pom.xml(maven配置)MyBatisTest .java 测试类整体框架
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">-->
<!-- <
;!&ndash
;主键字段的对应
&ndash
;>
;-->
<!-- <id property
="bid" column
="id"></id
>-->
<!-- <
;!&ndash
;非主键字段的对应
&ndash
;>
;-->
<!-- <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
);
}
}
整体框架