0
点赞
收藏
分享

微信扫一扫

Mapper代理文件实现


Mapper代理的开发方式,程序员只需要编写mapper接口(相当于dao接口)即可。Mybatis会自动的为mapper接口生成动态代理实现类。

规范

Mapper代理文件实现_User

不需编写Dao文件 使用Mapper代理

编写数据操作接口

package edu.ccit.cn.domain;

/**
* @program: mybatis02_mapper
* @description
* @author: LIANG
* @create: 2021-05-30 14:50
**/
public class User {
private int id;
private String username;
private String password;

public User() {
}

public User(String username, String password) {
this.username = username;
this.password = password;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}

编写Mapper接口

package edu.ccit.cn.mapper;

import edu.ccit.cn.domain.User;

/**
* @program: mybatis02_mapper
* @description
* @author: LIANG
* @create: 2021-05-30 14:52
**/
public interface UserMapper {
public void save(User user);
public User findUserById(int id);
}

编写映射文件

<?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">
<!--
namespace:命名空间,它的作用就是对SQL进行分类化管理,可以理解为SQL隔离
注意:使用mapper代理开发时,namespace有特殊且重要的作用
-->
<mapper namespace="edu.ccit.cn.mapper.UserMapper">
<select id="findUserById" parameterType="int" resultType="edu.ccit.cn.domain.User">
select * from t_user where id=#{?}
</select>
<insert id="save" parameterType="edu.ccit.cn.domain.User">
insert into t_user (username,password)values (#{username},#{password})
</insert>
</mapper>

将映射文件配置到全局配置文件中

<?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>
<!-- 配置mybatis的环境信息 -->
<environments default="development">
<environment id="development">
<!-- 配置JDBC事务控制,由mybatis进行管理 -->
<!--配置数据源-->
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybites?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="sqlmap/UserMapper.xml"></mapper>
</mappers>
</configuration>

测试

import edu.ccit.cn.domain.User;
import edu.ccit.cn.mapper.UserMapper;
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 org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;

/**
* @program: mybatis02_mapper
* @description
* @author: LIANG
* @create: 2021-05-30 15:02
**/
public class Test01_mapper {
SqlSessionFactory ssf;
@Before
public void setup() throws IOException {
//读取配置文件
InputStream is = Resources.getResourceAsStream("sqlMapConfig.xml");
//加载会话工厂
ssf = new SqlSessionFactoryBuilder().build(is);
}
@Test
public void method01(){
SqlSession session = ssf.openSession();
//通过session获取代理(jdk实现的代理)
UserMapper userMapper = session.getMapper(UserMapper.class);
//添加用户
User user = new User();
user.setUsername("孙兰香");
user.setPassword("wuzhongping");
userMapper.save(user);
session.commit();

}

}


举报

相关推荐

0 条评论