Mybatis Mapper代理开发Dao层

简介: Mybatis Mapper代理开发Dao层

Mapper代理开发原因


  1. 程序员只需要编写mapper接口和mapper.xml映射文件,Mybatis可以自动生成mapper接口实现类代理对象。
  2. 只不过程序员在编写mapper接口时 需要遵循一些开发规范:


1.mapper.java接口名跟mapper.xml映射文件相同并且在同一个包下
2 . 在mapper.xml映射文件中,namespace="mapper接口地址" --完全包名.mapper接口名
3 . mapper.java接口中的方法名和mapper.xml中statement的id值一致
3. mapper.java接口中的方法输入参数类型和mapper.xml中statement和parameterType指定的类型一致
4. mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致
5. SqlMapconfig.xml配置文件中--由于使用mapper代理方式,改为加载mapper接口。

传统方式使用mabatis进行Dao开发:

编写配置文件->编写mabatis映射文件->dao接口->dao实现类(里面靠sqlfactory实现各种接口)

Mapper代理模式进行Dao层开发

SqlMapperConfig核心配置文件:


<?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>
    <properties resource="jdbc.properties"/>
    <typeAliases>
        <package name="com.msb.pojo"/>
    </typeAliases>
    <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:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8"/>
                <property name="username" value="root"/>
                <property name="password" value="cl091900"/>
            </dataSource>
        </environment>
    </environments>
   <mappers>
       <mapper class="com.msb.mapper.DeptMapper"></mapper>
   </mappers>
</configuration>

DeptMapper.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.msb.mapper.DeptMapper">
<!--    id要和方法名相同-->
    <select id="selectAll" resultType="dept">
        select * from dept
    </select>
    <select id="selectOneById" resultType="dept"  parameterType="int">
        select * from dept where deptno=#{id}
    </select>
    <insert id="insertDept" parameterType="dept" >
        insert  into dept(deptno,dname,loc) values (#{deptno},#{dname},#{loc})
    </insert>
    <update id="updateDept" parameterType="dept">
        update dept set dname =#{dname},loc =#{loc} where deptno=#{deptno}
    </update>
    <delete id="deleteDept"   parameterType="int">
        delete from dept where deptno= #{id}
    </delete>
 </mapper>

DeptMapper接口

public interface DeptMapper {
    //查询部门信息
    List<Dept> selectAll() throws Exception;
    //根据主键查询单个部门信息
    Dept selectOneById(int id) throws Exception;
    int insertDept(Dept dept) throws Exception;
    int updateDept(Dept dept) throws Exception;
    int deleteDept(int id) throws Exception;
}
  • 测试类:
public class Test {
    private SqlSessionFactory factory;
    @Before
    public void init() throws IOException{
        InputStream stream = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
        factory=builder.build(stream);
    }
    @org.junit.Test
    public void test() throws Exception {
        DeptMapper deptMapper=factory.openSession().getMapper(DeptMapper.class);
        System.out.println(deptMapper.selectOneById(1));
    }
}
相关文章
|
SQL Java 数据库连接
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
|
SQL XML Java
MyBatis Mapper中使用limit参数的查询问题
总结而言,MyBatis中使用 `limit`参数的查询可以高度定制并且灵活,基于方法签名和XML映射文件的组合来达成多样化的查询需求。通过参数化查询和动态SQL,MyBatis可以有效地处理各种复杂情境下的数据库操作,并且将SQL语句的维护与业务代码的编写相分离,提升代码的可维护性和可阅读性。
951 13
|
SQL Java 数据库连接
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
|
SQL Java 数据库连接
MyBatis-Plus高级用法:最优化持久层开发
MyBatis-Plus 通过简化常见的持久层开发任务,提高了开发效率和代码的可维护性。通过合理使用条件构造器、分页插件、逻辑删除和代码生成器等高级功能,可以进一步优化持久层开发,提升系统性能和稳定性。掌握这些高级用法和最佳实践,有助于开发者构建高效、稳定和可扩展的企业级应用。
1071 13
|
SQL Java 数据库连接
【潜意识Java】深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
3269 1
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
940 2
|
SQL Java 数据库连接
mybatis使用四:dao接口参数与mapper 接口中SQL的对应和对应方式的总结,MyBatis的parameterType传入参数类型
这篇文章是关于MyBatis中DAO接口参数与Mapper接口中SQL的对应关系,以及如何使用parameterType传入参数类型的详细总结。
750 10
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1767 1
Spring boot 使用mybatis generator 自动生成代码插件
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
1223 0
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
900 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。