目录
4、创建一个关于mybatis的关键对象SqlSessionFactory、SqlSession的工具类
思路流程:搭建环境-->导入Mybatis--->编写代码--->测试
1.搭建项目
1、搭建实验数据库
#创建一个叫mybatis的数据
CREATE DATABASE `mybatis`;
#使用mybatis数据库
USE `mybatis`;
#创建一个user表
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,'王一','123456'),(2,'黄二','456789'),(3,'张三','987654');
2、导入相关的jar包
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
#如果是8版本的MySQL使用下面这个
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
3、创建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">
<configuration>
<environments default="development">
<environment id="development">
<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=utf8"/>
<property name="username" value="MySQL的用户名"/>
<property name="password" value="MySQL的密码"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserDaoMapper.xml"/>
</mappers>
</configuration>
4、创建一个关于mybatis的关键对象SqlSessionFactory、SqlSession的工具类
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 getSession(){
return sqlSessionFactory.openSession();
}
}
5、搭建实体类
public class User {
private int id;
private String name;
private String pwd;
}
//需要get,set,tostring方法
6、接口
public interface UserDao {
}
7、mapper文件
<?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.dao.UserDao">
</mapper>
8、目录结构图
到此我们的项目就搭建好了,接下来我们来进行查增改删的操作。
“查”操作
查询所有的User数据
首先在我们的接口类定义一个查询的方法 参数类是List<User>因为我们查询的是所有的用户数据所以返回的结果肯定不只是一个用户的数据所以就定义成集合。
import java.util.List;
import java.util.Map;
public interface UserDao {
List<User> getUserList();
}
我们定义完以后需要去mapper文件配置我们的方法跟SQL语句
<?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.dao.UserDao">
<!-- 这里的id是我们之前在接口定义的方法名, resultType是指返回结果的类型我们查询的是用户数据所以返回接口是User -->
<select id="getUserList" resultType="com.pojo.User">
select * from user
</select>
</mapper>
测试一下
import com.pojo.User;
import com.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class UserTest {
@Test
public void getUserList(){
//使用我们的工具类创建一个SqlSession对象
SqlSession sqlSession = MybatisUtils.getSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
List<User> userList = userDao.getUserList();
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
}
结果
流程:接口类编写方法->mapper文件配置->测试
根据id查询用户
接口类编写方法
import com.pojo.User;
import java.util.List;
import java.util.Map;
public interface UserDao {
List<User> getUserList();
User getUserById( int ids);
}
mapper文件
<?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.dao.UserDao">
<select id="getUserList" resultType="com.pojo.User">
select * from user
</select>
<select id="getUserById" resultType="com.pojo.User" parameterType="int">
select * from user where id=#{ids}
</select>
</mapper>
测试一下
@Test
public void getUserByIdTest(){
SqlSession sqlSession = MybatisUtils.getSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
User user = userDao.getUserById(2);
System.out.println(user);
sqlSession.close();
}
结果
“增”操作
接口类添加方法
public interface UserDao {
List<User> getUserList();
User getUserById( int ids);
//插入语句只有成功或者失败所以我们这里使用boolean
boolean addUser(User user);
}
mapper文件
<!--注意insert 是没有resultType返回类型的-->
<insert id="addUser" parameterType="com.pojo.User">
insert into user (id,name,pwd)values (#{id},#{name},#{pwd});
</insert>
测试一下
@Test
public void addUserTest(){
SqlSession sqlSession = MybatisUtils.getSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
User user = new User();
user.setId(4);
user.setName("李四");
user.setPwd("123456");
if (userDao.addUser(user)) {
System.out.println("添加用户成功");
}else{
System.out.println("添加用户失败");
}
// 注意要使用commit方法提交事务更改数据都需要提交事务否则执行语句会无效
sqlSession.commit();
sqlSession.close();
}
“ 改”操作
如果按照以上的操作相信大家应该也应该都会了,该操作我用一下别的方法,虽然它不是正规的方法但是它很实用,话不多说,步入正题
接口类
public interface UserDao {
List<User> getUserList();
User getUserById( int ids);
boolean addUser(User user);
//大家注意看我们的更改方法的参数是Map
boolean updataUser(Map<String,Object> map);
}
mapper文件
<!---->由于我们的参数是Map,所以我们mapper文件的参数也是map
<update id="updataUser" parameterType="map">
update user set name = #{name},pwd=#{pwd} where id=#{id};
</update>
测试一下
@Test
public void updataUserTest(){
SqlSession sqlSession = MybatisUtils.getSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
Map<String,Object> map = new HashMap<String,Object>();
//map方法的好处就是可以直接这样添加,他适用于增删改查四种操作
map.put("id",1);
map.put("name","哇哈哈哈哈哈");
map.put("pwd","aaaaaaaa");
if (userDao.updataUser(map)) {
System.out.println("更改用户成功");
}else{
System.out.println("更改用户失败");
}
// 注意要使用commit方法提交事务更改数据都需要提交事务否则执行语句会无效
sqlSession.commit();
sqlSession.close();
}
结果
“删”操作
接口类
import com.pojo.User;
import java.util.List;
import java.util.Map;
public interface UserDao {
List<User> getUserList();
User getUserById( int ids);
boolean addUser(User user);
boolean updataUser(Map<String,Object> map);
boolean deleteUser(Map<String,Object> map);
}
mapper文件
<delete id="deleteUser" parameterType="map">
delete * from user where id=#{id};
</delete>
测试一下
@Test
public void deleteUserTest(){
SqlSession sqlSession = MybatisUtils.getSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
Map<String,Object> map = new HashMap<String,Object>();
map.put("id",1);
if (userDao.updataUser(map)) {
System.out.println("删除用户成功");
}else{
System.out.println("删除用户失败");
}
// 注意要使用commit方法提交事务更改数据都需要提交事务否则执行语句会无效
sqlSession.commit();
sqlSession.close();
}
结果
源码
百度网盘 请输入提取码zce5