mybatis使用mapper代理的方式操作数据库

来源:互联网 发布:javascript location 编辑:程序博客网 时间:2024/05/22 05:21

利用mapper 代理的方式操作数据库和上一篇利用传统的方式相比,不需要程序员自己创建 dao 的接口类,而是通过 mybatis 代理的方式创建。

但是要注意一点在 usermapper.xml 文件中 mapper 的 namespace 的值要等于 dao 的接口类的地址,这是和传统的方式(随便起个名字)不同的地方,还有其他一些注意点在下面列出来了

sqlMapperConfig.xml

<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><environments default="development">          <environment id="development">              <!-- 配置JDBC事务控制,由mybatis进行管理 -->              <transactionManager type="JDBC"></transactionManager>              <!-- 配置数据源,采用mybatis连接池 -->              <dataSource type="POOLED">                  <property name="driver" value="com.mysql.jdbc.Driver" />                  <property name="url" value="jdbc:mysql://localhost:3306/spring"/>                  <property name="username" value="root" />                  <property name="password" value="5315314sd" />              </dataSource>           </environment>  </environments>     <mappers>    <!-- 加载 usermapper.xml 文件 -->    <mapper resource="usermapper.xml"/>    </mappers></configuration>

usermapper.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Config 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- mapper 的 namespace 的值要等于 userdao 接口的地址(包名.接口名) --><mapper namespace="testmapper.userdao"><!-- 查询用户id 名字要等于 userdao 接口里面对应的方法名, parameterType 的类型等于对应方法里面的输入参数类型, resultType是对应方法里面的返回值类型,例如 userdao 接口里面的方法:public user findUserById(int id); --><select id="findUserById" parameterType="int" resultType="test.user">select * from user where id =#{id}</select><!-- 添加用户 --><!-- parameterType:指定输入参数类型是 pojo #{}中指定 pojo 的属性名,接收到 pojo 的属性值 --><insert id="insertUser" parameterType="test.user">insert into user(name,password) values(#{name},#{password})</insert></mapper>
userdao 接口:

package testmapper;import test.user;public interface userdao {public user findUserById(int id);public void inserUser(user user);}

测试类:

package testmapper;import java.io.IOException;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 test.user;public class test {public static SqlSessionFactory sf;public void setup() throws IOException{String resource = "SqlMapConfig.xml";InputStream is = Resources.getResourceAsStream(resource);sf = new SqlSessionFactoryBuilder().build(is);}public static void main(String[]args){test t = new test();try {t.setup();} catch (IOException e) {e.printStackTrace();}SqlSession sqlsession = sf.openSession();//创建userdao对象,mybatis 自动生成 mapper 代理对象userdao userdao = sqlsession.getMapper(userdao.class);user user = userdao.findUserById(1);System.out.println(user);}}

整个项目框架:



原创粉丝点击