動的プロキシ4 + 1(4 + 1原理注)を開発するMyBatisのマッパー。
; mapper.xmlを呼び出すためにSQL文のIDと一致するために図1に示すように、インタフェースメソッド名ニーズ
2、パラメータ型インタフェースのニーズをのParameterType mapper.xml一致するように、
3、インタフェースの戻り値はresultTypeとのmapper.xmlと一致する必要がある。
図4 、mapper.xml名前空間は完全なパッケージ名インタフェースと一致するように、
図5に示すように、ノートマッパー動的プロキシ開発、自動的に戻り値の種類に応じて選択。
層ダオ、インタフェースを記述する必要性を開発するには、あなたが実装クラスを記述する必要が、あなたはMapper.xml 3つの動作データベースを提出する必要があります
マッパーダイナミックエージェントは唯一のインタフェースと設定ファイルを実装する必要がある、あなたは上記の動作を実現することができます
まず、IDによるユーザーのクエリ
<?XMLバージョン= "1.0"エンコード= "UTF-8" ?> <!DOCTYPEマッパー PUBLIC " - // mybatis.org//DTDマッパー3.0 // EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > < マッパー名前空間= "com.Gary.mapper.UserMapper" > <select id="selectUserById" parameterType="Integer" resultType="com.Gary.bean.User"> select * from user where u_id = #{id} </select> <!-- #{}占位符 尽量使用#{}来解决问题 --> <!-- ${}字符串拼接 容易sql注入 (or 1 = 1) --> <!-- ${value}中间的字符串一定需要使用value --> <select id="selectUserByName" parameterType="String" resultType="com.Gary.bean.User"> <!-- select * from user where u_username like '%${value}%' --> select * from user where u_username like "%"#{name}"%" </select> <!-- 添加用户 参数为全包名 --> <insert id="insertUser" parameterType="com.Gary.bean.User"> insert into user values(null,#{u_username},#{u_password},#{u_sex},#{u_createTime},#{u_cid}) </insert> <!-- 根据id修改username字段的语句 --> <update id="updateUser" parameterType="com.Gary.bean.User"> update user set u_username = #{u_username} where u_id = #{u_id} </update> <!-- 根据id删除用户 --> <delete id="deleteUserById" parameterType="Integer"> delete from user where u_id = #{id} </delete> </mapper>
package com.Gary.test; 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 org.junit.Test; import com.Gary.bean.User; import com.Gary.mapper.UserMapper; public class MapperTest { @Test public void Test1() throws IOException { //读取配置文件 String resource = "sqlMapConfig.xml"; InputStream in = Resources.getResourceAsStream(resource); //创建sqlSessionFactory SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in); //生产一个sqlSession SqlSession session = ssf.openSession(); UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.selectUserById(1); System.out.println(user); } }
二、通过名字模糊查询用户列表
<?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.Gary.mapper.UserMapper"> <select id="selectUserById" parameterType="Integer" resultType="com.Gary.bean.User"> select * from user where u_id = #{id} </select> <!-- #{}占位符 尽量使用#{}来解决问题 --> <!-- ${}字符串拼接 容易sql注入 (or 1 = 1) --> <!-- ${value}中间的字符串一定需要使用value --> <select id="selectUserByName" parameterType="String" resultType="com.Gary.bean.User"> <!-- select * from user where u_username like '%${value}%' --> select * from user where u_username like "%"#{name}"%" </select> <!-- 添加用户 参数为全包名 --> <insert id="insertUser" parameterType="com.Gary.bean.User"> insert into user values(null,#{u_username},#{u_password},#{u_sex},#{u_createTime},#{u_cid}) </insert> <!-- 根据id修改username字段的语句 --> <update id="updateUser" parameterType="com.Gary.bean.User"> update user set u_username = #{u_username} where u_id = #{u_id} </update> <!-- 根据id删除用户 --> <delete id="deleteUserById" parameterType="Integer"> delete from user where u_id = #{id} </delete> </mapper>
package com.Gary.test; import java.io.IOException; import java.io.InputStream; import java.util.List; 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; import com.Gary.bean.User; import com.Gary.mapper.UserMapper; public class MapperTest2 { @Test public void Test2() throws IOException { //读取配置文件 String resource = "sqlMapConfig.xml"; InputStream in = Resources.getResourceAsStream(resource); //创建sqlSessionFactory SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in); //生产一个sqlSession SqlSession session = ssf.openSession(); UserMapper mapper = session.getMapper(UserMapper.class); List<User> list = mapper.selectUserByName("王"); for(User u : list) { System.out.println(u); } } }