首页 mybatis 动态mapper代理+动态sql+maven项目

mybatis 动态mapper代理+动态sql+maven项目

淚 · 彦 2018-9-3 0 1133

1maven项目:

    在pom.xml中有七个标签,其中Dependencies:添加jar包的页面(重要);

 

2动态mapper项目结构:

     

 

3】实现原理:

 

Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。

Mapper接口开发需要遵循以下规范:

1  Mapper.xml文件中的namespacemapper接口的类路径相同。

2  Mapper接口方法名和Mapper.xml中定义的每个statementid相同。

3  Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql parameterType的类型相同。

4  Mapper接口方法的输出参数类型和mapper.xml中定义的每个sqlresultType的类型相同。

 

4】主要文件:

   pojomapper.xml(名字不唯一),mapper接口,sqlMapConfig.xml(核心配置文件),log4j.properties(日志文件)

 

5】动态sql

<!-- 传递pojo综合查询用户信息 -->

               <select id="findUserList" parameterType="jemal.mybatis.User" resultType="jemal.mybatis.User">

                               select * from user

                               where 1=1

                               <if test="id!=null and id!=''">

                               and id=#{id}

                               </if>

                               <if test="username!=null and username!=''">

                               and username like '%${username}%'

                               </if>

               </select>

<!--测试-->

 

@Test

 public void findUserList() {

                SqlSession sqlSession=null;

                               User user=new User();

                               List<User> userlist=null;

                               user.setUsername("张三");

                               user.setId(10);

                               try {

                                              sqlSession=sqlSessionFactory.openSession();

                                              UserMapper userMapper=sqlSession.getMapper(UserMapper.class);

                                   userlist=userMapper.findUserList(user);

                                   sqlSession.commit();

                               } catch (Exception e) {

                                  e.printStackTrace();

                               }finally{

                                              sqlSession.close();

                               }

                               System.out.println(userlist);

 }

}


 6】代码:

1、 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="jemal.mybatis.UserMapper">

<!--根据id查询用户  -->

<select id="findUserById" parameterType="int" resultType="jemal.mybatis.User">

   select * from user where id=#{id}

</select>

</mapper>

  

2、UserMapper.java接口

 

package jemal.mybatis;

public interface UserMapper {

 //根据id 查询用户信息,方法名、返回值、参数分别和mapper.xml文件对应

               public User findUserById(int id) throws Exception;

}

 

3、UserMapperConfig.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>

               <!-- 和spring整合后 environments配置将废除-->

               <environments default="development">

                               <environment id="development">

                               <!-- 使用jdbc事务管理-->

                                              <transactionManager type="JDBC" />

                               <!-- 数据库连接池-->

                                              <dataSource type="POOLED">

                                                             <property name="driver"

                                                             value="com.mysql.jdbc.Driver" />

                                                             <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />

                                                             <property name="username" value="root" />

                                                             <property name="password" value="123456" />

                                              </dataSource>

                               </environment>

               </environments>

<!-- 加载映射文件-->

               <mappers>

                               <mapper resource="UserMapper.xml"/>                             

               </mappers>          

</configuration>

 

4、测试代码
 

package jemal.mybatis;

import java.io.InputStream;

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.Test;

 

public class TestMybatis {      

    public static  SqlSessionFactory getsqlsessionFactory() {

             String inputsring="UserMapConfig.xml";

             InputStream inputStream=null;

             try {

                               inputStream=Resources.getResourceAsStream(inputsring);

                               } catch (Exception e) {

                               e.printStackTrace();               

                               }

            SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);

                               return sqlSessionFactory;

               }

     SqlSessionFactory sqlSessionFactory=TestMybatis.getsqlsessionFactory();

               @Test

               public void findUserById() throws Exception {

                               SqlSession sqlSession=null;

                               User user=null;

                               try {

                                              sqlSession=sqlSessionFactory.openSession();

                                              UserMapper userMapper=sqlSession.getMapper(UserMapper.class);

                                   user=userMapper.findUserById(24);

                               } catch (Exception e) {

                               e.printStackTrace();

                               }finally{

                                              sqlSession.close();

                               }

                               System.out.println(user);

               }

}   

 


 





分享本文至:
免责声明:本文仅代表作者个人观点,与本网站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
作者: 淚 · 彦 本文最后编辑于2018-9-3 11:04:04
淚 · 彦

若一切皆善,便一切皆美

作者的微博

发表评论: