一个MyBatis基础工程
1. 搭建数据库
CREATE DATABASE `mybatis`;
USE `mybatis`;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(20) NOT NULL,
`name` varchar(30) DEFAULT NULL,
`pwd` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `user`(`id`,`name`,`pwd`) values (1,'hello','123456'),(2,'张
三','abcdef'),(3,'李四','987654');
2. . 编写MyBatis配置文件(如: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"/>
<!--默认使用id为development的环境-->
<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>
<!--或者使用test环境配置,不创建独立的db.properties文件-->
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/lf/dao/UserMapper.xml"/>
</mappers>
</configuration>
3. 编写MyBatis工具类(如:MybatisUtils.java)
package com.lf.utils;
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 java.io.IOException;
import java.io.InputStream;
public class MybatisUtils {
//提升作用域
private static SqlSessionFactory sqlSessionFactory;
static{
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//获取SqlSession连接
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
4. 创建实体类(如:User.java)
public class User {
private int id; //id
private String name; //姓名
private String pwd; //密码
//构造,有参,无参
//set/get
//toString()
}
5. 编写实体类对应的Mapper接口(如:UserMapper)
package com.lf.dao;
import com.lf.pojo.User;
import java.util.List;
public interface UserMapper {
//查询全部用户
List<User> getUserList();
//根据字段查询用户
List<User> getUserLike(String value);
//根据ID查询用户
User getUserById(int id);
//insert一个用户
int addUser(User user);
//修改用户
int updateUser(User user);
//删除一个用户
int deleteUser(int id);
}
6. 编写实体类对应的Mapper.xml配置文件(如: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.lf.dao.UserMapper">
<select id="getUserLike" resultType="com.lf.pojo.User">
select * from mybatis.user where name like "%"#{value}"%"
</select>
<select id="getUserList" resultType="com.lf.pojo.User">
select * from mybatis.user
</select>
<insert id="addUser" parameterType="com.lf.pojo.User">
insert into mybatis.user (id,name,pwd) values (#{id},#{name },#{pwd});
</insert>
<update id="updateUser" parameterType="com.lf.pojo.User">
update user set name=#{name},pwd=#{pwd} where id=#{id};
</update>
</mapper>
7. 编写测试类 (可在test文件夹中测试)
package com.lf.dao;
import com.lf.pojo.User;
import com.lf.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class UserDaoTest {
//查询所有姓蓝的用户
@Test
public void getUserLike(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserLike("蓝%");
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
//查询所有数据
@Test
public void test() {
//第一步:获得SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
try {
UserMapper userDao = sqlSession.getMapper(UserMapper.class);
List<User> userList = userDao.getUserList();
for (User user : userList) {
System.out.println(user);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭SqlSession
sqlSession.close();
}
}
}