Mybatis一getMapper 实现增删改查***

    科技2025-11-15  7

    动态代理-根据id查询

    (1)接口与类是实现关系 public interface MyDao{ public void save(); } //编写实现类文件 public class MyDaoClass implements MyDao{ public void save(){ System.out.println("Hello"); //sql //jdbc } } (2)动态代理生成实现类 src\main\java\com\wzx\dao\UserDao.java //com.wzx.dao.UserDao.findById public interface UserDao { public User findById(int id); }

    src\main\resources\com\wzx\dao\UserDao.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"> <!-- 使用代理以后 当前的映射文件要与接口同名,并且放在同一个位置 使用代理以后 namespace要求写接口的全类名 包名+类名=全类名 UserDao--> <mapper namespace="com.wzx.dao.UserDao"> <!-- 使用代理以后id必须是方法名--> <select id="findById" parameterType="int" resultType="com.wzx.bean.User"> select * from user where id =#{id}; </select> </mapper>

    src\test\java\com\wzx\pack02\Test01Proxy.java

    public class Test01Proxy { @Test public void test01(){ SqlSession sqlSession = MySessionUtils.getSession(); //select * from user where id =1; UserDao dao = sqlSession.getMapper(UserDao.class);//内部就使用你编写接口来生成代理对象 //代理对象的方法内部 查询sql,并且执行jdbc代码 User user = dao.findById(1); System.out.println(user); //定义接口 sqlSession.close(); } }

    src\main\resources\SqlMapConfig.xml

    <!-- 配置多个映射文件--> <mappers> <mapper resource="UserMapper.xml"/> <mapper resource="com/wzx/dao/UserDao.xml"/> </mappers>

    根据用户名模糊查询

    (1)根据用户名模糊查询(2)语句(3)配置(4)通过session.getMapper()返回的对象不是实现类对象 @Test public void test02(){ SqlSession sqlSession = MySessionUtils.getSession(); //返回的是实现接口的实现类对象 UserDao dao = sqlSession.getMapper(UserDao.class); //搜索名字 List<User>list=dao.findByKeyWord("张%"); System.out.println(list); //定义接口 sqlSession.close(); }

    UserDao .java

    //com.wzx.dao.UserDao.findById public interface UserDao { public User findById(int id); //select * from user where username like '张%' List<User> findByKeyWord(String s); }

    UserDao .xml

    <select id="findByKeyWord" parameterType="string" resultType="com.wzx.bean.User"> select * from user where username like #{keyword} </select>

    删除数据

    (1)定义接口中的方法(2)语句(3)配置(4)通过session.getMapper()返回的对象不是实现类对象 @Test public void test03(){ SqlSession sqlSession = MySessionUtils.getSession(); //返回的是实现接口的实现类对象 UserDao dao = sqlSession.getMapper(UserDao.class); //删除 dao.deleteById(16); // sqlSession.commit(); sqlSession.close(); } //com.wzx.dao.UserDao.findById public interface UserDao { //delete from user where id = 16; void deleteById(int id); } <delete id="deleteById" parameterType="int"> delete from user where id = #{id}; </delete>

    插入数据

    (1)定义接口中的方法 (2)语句 (3)配置 (4)通过session.getMapper()返回的对象不是实现类对象

    @Test public void test04(){ SqlSession sqlSession = MySessionUtils.getSession(); //返回的是实现接口的实现类对象 UserDao dao = sqlSession.getMapper(UserDao.class); User user = new User(); user.setId(100); user.setUsername("jackjhone"); user.setAddress("北京"); user.setBirthday(new Date()); dao.saveUser(user); // sqlSession.commit(); sqlSession.close(); } //com.wzx.dao.UserDao.findById public interface UserDao { //insert into user value(null,#{username},#{birthday},#{sex},#{address}) void saveUser(User user); } <insert id="saveUser" parameterType="com.wzx.bean.User"> insert into user value(null,#{username},#{birthday},#{sex},#{address}) </insert>

    给类名起别名

    src\main\resources\SqlMapConfig.xml

    <typeAliases> <!-- <typeAlias type="com.wzx.bean.User" alias="user"></typeAlias> --> <package name="com.wzx.bean"/> </typeAliases>
    Processed: 0.009, SQL: 9