1.创建Maven并添加如下依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.10</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.4.3.4</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
- pom.xml 的 build 添加如下配置
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
- db.properties
db.username=root
db.password=123456
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql:///mytest?serverTimezone=Asia/Shanghai
- User.class
@Data
//指定该类映射的表名
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Integer id;
private String username;
private String password;
private String address;
private List<String> love;
}
- UserMapper
public interface UserMapper extends BaseMapper<User> {
}
- mybatis-config.xml
<?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>
<!--引入外部的 db.properties-->
<properties resource="db.properties">
</properties>
<!--
配置类型别名
-->
<typeAliases>
<!--为类型定义别名,定义之后,就可以在 Mapper.xml 中使用该别名了-->
<!-- <typeAlias type="com.qfedu.demo.model.Book" alias="book"/>-->
<!--会自动给所有实体类配置别名,默认的别名就是类名或者类名首字母小写-->
<package name="www.nf.demo.model"/>
</typeAliases>
<!--
这个地方配置系统环境(数据库信息)
environments 中可以有多个 environment,每一个 environment 都代表了一个数据源
-->
<environments default="dev">
<environment id="dev">
<transactionManager type="jdbc"></transactionManager>
<dataSource type="org.apache.ibatis.datasource.pooled.PooledDataSourceFactory">
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
<property name="url" value="${db.url}"/>
<property name="driver" value="${db.driver}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--指定具体的 Mapper 接口,MyBatis 会在接口的目录下,直接去查找对应的同名 Mapper.xml 文件-->
<!-- <mapper class="com.qfedu.demo.mapper.BookMapper"/>-->
<!--指定具体的 Mapper.xml 文件位置-->
<!-- <mapper resource="com/qfedu/demo/mapper/BookMapper.xml"/>-->
<!--
下面这种配置,要求 Mapper 接口和 Mapper.xml 文件在同一个目录下
-->
<package name="www.nf.demo.mapper"/>
</mappers>
</configuration>
- MyListTypeHandler.class做数据处理
@MappedJdbcTypes(JdbcType.VARCHAR)
@MappedTypes(List.class)
public class MyListTypeHandler implements TypeHandler<List<String>> {
@Override
public void setParameter(PreparedStatement preparedStatement, int i, List<String> strings, JdbcType jdbcType) throws SQLException {
String collect = strings.stream().map(s -> s + ",").collect(Collectors.joining());
preparedStatement.setString(i,collect);
}
@Override
public List<String> getResult(ResultSet resultSet, String s) throws SQLException {
String love = resultSet.getString(s);
if (love!=null&&!love.equals("")){
return Arrays.asList(love.split(","));
}
return null;
}
@Override
public List<String> getResult(ResultSet resultSet, int i) throws SQLException {
String love = resultSet.getString(i);
if (love!=null&&!love.equals("")){
return Arrays.asList(love.split(","));
}
return null;
}
@Override
public List<String> getResult(CallableStatement callableStatement, int i) throws SQLException {
String love = callableStatement.getString(i);
if (love!=null&&!love.equals("")){
return Arrays.asList(love.split(","));
}
return null;
}
}
- 测试
package www.nf.demo;
import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import www.nf.demo.mapper.UserMapper;
import www.nf.demo.model.User;
import java.io.IOException;
import java.util.*;
public class mytest {
private SqlSession sqlSession;
private UserMapper userMapper;
@Test
public void test() {
}
@Test
public void test8() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lt("id",3);
int i = userMapper.delete(queryWrapper);
System.out.println(i);
sqlSession.commit();
}
@Test
public void test7() {
Map<String, Object> map=new HashMap<>();
map.put("address","广州");
map.put("username","王鹏");
int i = userMapper.deleteByMap(map);
System.out.println(i);
sqlSession.commit();
}
@Test
public void test6() {
User user=new User();
user.setAddress("学山唐");
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("id",10).likeRight("username","鲁");
int i = userMapper.update(user, queryWrapper);
sqlSession.commit();
System.out.println(i);
}
@Test
public void test5() {
User user=new User();
user.setId(20);
user.setUsername("杨戬");
int i = userMapper.updateById(user);
System.out.println(i);
sqlSession.commit();
}
@Test
public void test4() {
User user=new User();
user.setUsername("项羽");
user.setPassword("86534");
user.setAddress("江东");
List<String> loves=new ArrayList<>();
loves.add("骑马");
loves.add("射箭");
loves.add("小乔");
user.setLove(loves);
int i = userMapper.insert(user);
System.out.println(i);
sqlSession.commit();
}
@Test
public void test3() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// id大于5,姓张的
queryWrapper.gt("id",5).likeRight("username","张");
List<User> users = userMapper.selectList(queryWrapper);
System.out.println(users);
}
@Test
public void test2() {
//查询所有记录
List<User> list = userMapper.selectList(null);
System.out.println(list);
System.out.println(list.size());
}
@Test
public void test1() {
List<User> users = userMapper.selectBatchIds(Arrays.asList(10, 11, 15));
System.out.println(users);
}
@Before
public void before() throws IOException {
SqlSessionFactory sqlSessionFactory = new MybatisSqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
sqlSession = sqlSessionFactory.openSession();
userMapper = sqlSession.getMapper(UserMapper.class);
}
@After
public void after() {
sqlSession.close();
}
}