1)创建项目
2)添加依赖
项目创建成功后在pom.xml中更改打包方式,添加相关依赖
在坐标pom.xml中将配置打包方式更改为jar包
继续添加依赖,包含mybatis核心jar包、junit测试、mysql驱动等
< dependencies>
< dependency>
< groupId> org.mybatis</ groupId>
< artifactId> mybatis</ artifactId>
< version> 3.5.7</ version>
</ dependency>
< dependency>
< groupId> junit</ groupId>
< artifactId> junit</ artifactId>
< version> 4.12</ version>
< scope> test</ scope>
</ dependency>
< dependency>
< groupId> mysql</ groupId>
< artifactId> mysql-connector-java</ artifactId>
< version> runtime</ version>
</ dependency>
< dependency>
< groupId> log4j</ groupId>
< artifactId> log4j</ artifactId>
< version> 1.2.17</ version>
< dependency>
< groupId> org.projectlombok</ groupId>
< artifactId> lombok</ artifactId>
</ dependency>
< dependency>
< groupId> com.github.pagehelper</ groupId>
< artifactId> pagehelper</ artifactId>
< version> 5.2.0</ version>
</ dependency>
</ dependencies>
注意对于log4j,还需要引入log4j日志的配置文件,log4j.xml,存放在src/main/resources目录下
注意对于pagehelper,需要在mybatis-config.xml核心配置文件的environment之前添加
< plugins>
< plugin interceptor = " com.github.pagehelper.PageInterceptor" > </ plugin>
</ plugins>
3)核心配置文件
新建mybatis-config.xml配置文件(配置文件都在resources目录下) 复制粘贴基本配置信息(这里我用的是mybatis-3.5.13,就在官方目录里去找)
<?xml version="1.0" encoding="UTF-8" ?>
<! DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd" >
< configuration>
< environments default = " development" >
< environment id = " development" >
< transactionManager type = " JDBC" />
< dataSource type = " POOLED" >
< property name = " driver" value = " ${driver}" />
< property name = " url" value = " ${url}" />
< property name = " username" value = " ${username}" />
< property name = " password" value = " ${password}" />
</ dataSource>
</ environment>
</ environments>
< mappers>
< mapper resource = " org/mybatis/example/BlogMapper.xml" />
</ mappers>
</ configuration>
4)编写mapper接口与xml映射文件
在java中的mapper包下每有一个实体类对应的mapper接口就应该有一个对应同名的在resources中的mappers下的xml配置文件
UserMapper接口用于写操纵数据库的方法,每个方法都应该在UserMapper.xml中实现(当然也可以用注解) UserMapper.xml文件(映射文件)用于实现UserMapper接口中各个方法的SQL语句
别忘了在mybatis-config.xml中引入mapper的配置文件
书写测试类MyBatisTest
package com. dadiancao. test ;
import com. dadiancao. mapper. UserMapper ;
import org. apache. ibatis. io. Resources ;
import org. apache. ibatis. session. * ;
import org. junit. Test ;
import java. io. IOException ;
import java. io. InputStream ;
import java. sql. Connection ;
public class MyBatisTest {
@Test
public void testInsert ( ) throws IOException {
InputStream is = Resources . getResourceAsStream ( "mybatis-config.xml" ) ;
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder ( ) ;
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder. build ( is) ;
SqlSession sqlSession= sqlSessionFactory. openSession ( true ) ;
UserMapper mapper= sqlSession. getMapper ( UserMapper . class ) ;
int result= mapper. insertUser ( ) ;
System . out. println ( "结果:" + result) ;
sqlSession. close ( ) ;
}
}
5)完整案例
1:项目结构
2:User实体类
package com. dadiancao. entity ;
import lombok. Data ;
import lombok. AllArgsConstructor ;
import lombok. NoArgsConstructor ;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String name;
private Integer age;
private Integer gender;
private String phone;
}
3:mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<! DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd" >
< configuration>
< properties resource = " jdbc.properties" />
< typeAliases>
< package name = " com.dadiancao.entity" />
</ typeAliases>
< environments default = " development" >
< environment id = " development" >
< transactionManager type = " JDBC" />
< dataSource type = " POOLED" >
< property name = " driver" value = " ${jdbc.driver}" />
< property name = " url" value = " ${jdbc.url}" />
< property name = " username" value = " ${jdbc.username}" />
< property name = " password" value = " ${jdbc.password}" />
</ dataSource>
</ environment>
< environment id = " test" >
< transactionManager type = " JDBC" />
< dataSource type = " POOLED" >
< property name = " driver" value = " com.mysql.cj.jdbc.Driver" />
< property name = " url" value = " jdbc:mysql://localhost:3306?mybitis?serverTimezone=UTC" />
< property name = " username" value = " root" />
< property name = " password" value = " 123456" />
</ dataSource>
</ environment>
</ environments>
< mappers>
< package name = " com.dadiancao.mapper" />
</ mappers>
</ configuration>
4:UserMapper
package com. dadiancao. mapper ;
import com. dadiancao. entity. User ;
import java. util. List ;
public interface UserMapper {
int insertUser ( ) ;
void updateUser ( ) ;
void deleteUser ( ) ;
User getUserById ( ) ;
List < User > getAllUsers ( ) ;
}
5:UserMapper.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.dadiancao.mapper.UserMapper" >
< insert id = " insertUser" >
insert into user values(20,'RoysterCDD',18,1,'15715715715')
</ insert>
< update id = " updateUser" >
update user set name='Rick',gender=2 where id=3
</ update>
< delete id = " deleteUser" >
delete from user where id=3
</ delete>
< select id = " getUserById" resultType = " com.dadiancao.entity.User" >
select * from user where id=1
</ select>
< select id = " getAllUsers" resultType = " user" >
select * from user
</ select>
</ mapper>
6:java测试类
package com. dadiancao. test ;
import com. dadiancao. entity. User ;
import com. dadiancao. mapper. UserMapper ;
import com. dadiancao. utils. SqlSessionUtil ;
import org. apache. ibatis. io. Resources ;
import org. apache. ibatis. session. * ;
import org. junit. Test ;
import java. io. IOException ;
import java. io. InputStream ;
import java. sql. Connection ;
import java. util. List ;
public class MyBatisTest {
@Test
public void testInsert ( ) throws IOException {
InputStream is = Resources . getResourceAsStream ( "mybatis-config.xml" ) ;
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder ( ) ;
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder. build ( is) ;
SqlSession sqlSession= sqlSessionFactory. openSession ( true ) ;
UserMapper mapper= sqlSession. getMapper ( UserMapper . class ) ;
int result= mapper. insertUser ( ) ;
System . out. println ( "结果:" + result) ;
sqlSession. close ( ) ;
}
@Test
public void testUpdate ( ) {
SqlSession sqlSession= SqlSessionUtil . getSqlSession ( ) ;
UserMapper mapper= sqlSession. getMapper ( UserMapper . class ) ;
mapper. updateUser ( ) ;
sqlSession. close ( ) ;
}
@Test
public void testDelete ( ) {
SqlSession sqlSession= SqlSessionUtil . getSqlSession ( ) ;
UserMapper mapper= sqlSession. getMapper ( UserMapper . class ) ;
mapper. deleteUser ( ) ; ;
sqlSession. close ( ) ;
}
@Test
public void testGetUserById ( ) {
SqlSession sqlSession= SqlSessionUtil . getSqlSession ( ) ;
UserMapper mapper= sqlSession. getMapper ( UserMapper . class ) ;
User user= mapper. getUserById ( ) ;
System . out. println ( user) ;
sqlSession. close ( ) ;
}
@Test
public void testGetAllUsers ( ) {
SqlSession sqlSession= SqlSessionUtil . getSqlSession ( ) ;
UserMapper mapper= sqlSession. getMapper ( UserMapper . class ) ;
List < User > list= mapper. getAllUsers ( ) ;
list. forEach ( System . out:: println ) ;
sqlSession. close ( ) ;
}
}
6)原理
通过UserMapper的全类名→找到映射文件→找到Mapper接口中的映射方法→找到SQL语句