MyBatis环境配置和方法使用
MyBatis环境配置和方法使用
MyBatis环境配置和方法使用
1.MyBatis
MyBatis 是一款优秀的持久层框架,它可以避免JDBC的连接配置和获取结果集等操作的代码繁琐,简略这些步骤。
可以解除sql的耦合,方便代码的维护和管理。而且简单,jar包少,没有第三方依赖。
需要的jar包(在maven中配置)
<!--MyBatis的jar包 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--mysql的jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2.MyBatis的环境配置
在resource中创建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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc.url=jdbc:mysql://localhost:3306/web_work?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"/>
<property name="username" value="root"/>
<property name="password" value="123321"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--这里填写和mapper的xml的路径来进行配置连接 -->
<mapper resource="resource/userMapper.xml"/>
</mappers>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
我们还需要设置一个工具类来使用调用这些MyBatis,我们可以设置static来定义这些方法,这样我们在调用这些工具类的时候就不需要繁琐调用这些方法
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 {
//获取sqlSessionFactory 对象
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();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
这样我们编写mapper时只要简单的调用
SqlSession sqlsession = MybatisUtils.getSession();
1
我们需要一个mapper可以来配对这些配置文件,简单创建一个mapper
import com.nicht.pojo.User;
import java.util.List;
public interface UserMapper {
//简单查询功能
List<User> selectUser();
}
1
2
3
4
5
6
7
然后给这个mapper类编写一个Mapper.xml的配置文件来配对(个人建议放在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">
<!-- 所对应mapper文件路径-->
<mapper namespace="com.nicht.mapper.UserMapper">
<!--mapper中所对应的方法名 和sql表所对应的user类 -->
<select id="selectUser" resultType="com.nicht.pojo.User">
select * from Mybatis.user
<!-- Mybatis其下的user表-->
</select>
</mapper>
1
2
3
4
5
6
7
8
9
10
11
12
所以当我们调用这个mapper的方法时候,系统能找到所对应的的mapper对应文件来进行sql语句的执行
3.测试面板
public class MyTest {
@Test
public void selectUser() {
SqlSession session = MybatisUtils.getSession();
//UserMapper.class中用到了反射的原理
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.selectUser();
for (User user: users){
System.out.println(user);
}
session.close();
//一定要记得关闭session
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
到这时候我们发现每个mapper的方法都要配置一个mapper.xml的文件,不会那么简便,所以就有了MyBatisPlus的诞生,之后我将会探讨到
4.MyBatis中的CRUD(增删改查)操作
在上面我已经简单列举MyBatis中遍历数据库的功能,现在来说说增删改查的操作
要想配置这些sql语句我们要在mapper中创造相对应的方法
1.查询(根据id来查询):
在UserMapper中添加对应方法
public interface UserMapper {
//查询全部用户
List<User> selectUser();
//根据id查询用户
User selectUserById(int id);
}
1
2
3
4
5
6
在mapper.xml中配置对应方法
<!--parameterType 为传入参数的参数类型 resultType 为返回的参数类型-->
<select id="selectUserById" resultType="com.nicht.pojo.User" parameterType="int">
select * from Mybatis.user where id = #{id}
</select>
1
2
3
4
调用:
public void tsetSelectUserById() {
SqlSession session = MybatisUtils.getSession(); //获取SqlSession连接
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectUserById(1);
System.out.println(user);
session.close();
1
2
3
4
5
6
如果我们遇到需要两个参数该怎么办?
可以在mapper中的方法中的参数前面加上 @Param。
这样我们在xml文件就可以直接取到
User selectUserById(@Param("Id") String username,@Param("name") String pwd);
1
在xml中可以直接取到就不需要parameterType来定义参数类型
<select id="selectUserByNP" resultType="com.nicht.pojo.User">
select * from user where name = #{name} and id = #{id}
</select>
1
2
3
2.增加:
在UserMapper中添加对应方法
public interface UserMapper {
//查询全部用户
List<User> selectUser();
//根据id查询用户
User selectUserById(int id);
//增加用户
int addUser(User user);
1
2
3
4
5
6
7
在mapper.xml中配置:
<insert id="addUser" parameterType="com.nicht.pojo.User">
insert into Mybatis.user (id,name,year) values (#{id},#{name},#{year})
</insert>
1
2
3
测试:
public void testAddUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = new User(2,"孙笑川","60");
int i = mapper.addUser(user);
System.out.println(i);
session.commit(); //提交事务,重点!不写的话不会提交到数据库
session.close();
1
2
3
4
5
6
7
8
注意:在增删改的操作后,我们要提交事物给数据库,要不然无法获得数据库响应:
session.commit();
3.修改:
在UserMapper中添加对应方法
public interface UserMapper {
//查询全部用户
List<User> selectUser();
//根据id查询用户
User selectUserById(int id);
//增加用户
int addUser(User user);
//修改用户
int updateUser(User user);
1
2
3
4
5
6
7
8
9
在mapper.xml中配置:
<update id="updateUser" parameterType="com.kuang.pojo.User">
update Mybatis.user set name=#{name},year=#{year} where id = #{id}
</update>
1
2
3
测试:
public void testAddUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = new User(2,"韩金龙","20");
int i = mapper.update(user);
System.out.println(i);
session.commit(); //提交事务,重点!不写的话不会提交到数据库
session.close();
1
2
3
4
5
6
7
8
9
也可以依靠查询的方法来获得对应的id目标实体类
public void testUpdateUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectUserById(1);//依靠查询方法获得目标实体类
user.setname("韩金龙");
user.setyear("20");
int i = mapper.updateUser(user);
System.out.println(i);
session.commit(); //提交事务,重点!不写的话不会提交到数据库
session.close();
}
1
2
3
4
5
6
7
8
9
10
11
4.删除:
在UserMapper中添加对应方法
public interface UserMapper {
//查询全部用户
List<User> selectUser();
//根据id查询用户
User selectUserById(int id);
//增加用户
int addUser(User user);
//修改用户
int updateUser(User user);
//删除用户
int deleteUser(int id);
1
2
3
4
5
6
7
8
9
10
11
在mapper.xml中配置:
<delete id="deleteUser" parameterType="int">
delete from Mybatis.user where id = #{id}
</delete>
1
2
3
4
测试:
public void testDeleteUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
int i = mapper.deleteUser(2);
System.out.println(i);
session.commit(); //提交事务,重点!不写的话不会提交到数据库
session.close();
}
————————————————
版权声明:本文为CSDN博主「瞎眼望人间」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a1369791292/article/details/114684347