增删改查- 万能map- 模糊查询

1.编写接口

2.编写对应的mapper种的sql语句

3.测试

 

接口

复制代码
public interface UserDao {
    List<User> getUserList();

    //根据ID查询用户
    User getUserId(int id);

    //增加一个用户
    int addUser(User user);

    //修改一个用户
    int update_User(User user);

    //删除一个用户
    int deleteUser(int id);
}
View Code
复制代码

创建相关的实体类的时候,属性要和数据库对应的字段相同(一一对应),方便后面 传入对象 对数据库进行更改

比如数据库字段id name age, 创建的实体类User 属性就包括 int id , String name , int age 也包括相关的set get 方法

 

增删改查用特有的方式写到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接口-->
<mapper namespace="com.ljm.dao.UserDao(接口路径)">




</mapper>
View Code
复制代码

 

 <insert id="addUser" parameterType="com.ljm.pojo.User" >
        insert into mybatis.user(name,age) value (#{name},#{age});
    </insert>
View Code
复制代码
    public void test_addUser(){
        SqlSession sqlSession=MybatisUtils.getSqlSession();
        UserDao mapper=sqlSession.getMapper(UserDao.class);
        int number = mapper.addUser(new User("韩红",21));
        System.out.println(number);
        //必须要提交事务
        sqlSession.commit();
        sqlSession.close();
View Code
复制代码

复制代码
   <delete id="deleteUser" parameterType="int">
        delete from mybatis.user where id=#{id}
    </delete>


<!-- 这里实测   对象属性中没有id这一项   , 仅仅传递一个值(不是对象)的话  
       这样也能成功删除


-->
View Code
复制代码
复制代码
    public void test_deleteUser(){
        SqlSession sqlSession=MybatisUtils.getSqlSession();
        UserDao mapper=sqlSession.getMapper(UserDao.class);
        int number = mapper.deleteUser(5);
        System.out.println(number);
        //必须要提交事务
        sqlSession.commit();
        sqlSession.close();
    }
View Code
复制代码

复制代码
    <update id="update_User" parameterType="com.ljm.pojo.User">
        update mybatis.user
        set age =#{age},name =#{name}
        where id=6
    </update>


<!-- update:  

   where id=6  是对象中的属性缺少与数据库字段对应(比如自增ID),可以直接再此写上数值  ,不推荐 ,还是对象属性全部覆盖字段会比较好

    如  where id=#{id}
-->
View Code
复制代码
复制代码
    public void test_updateUser(){
        SqlSession sqlSession=MybatisUtils.getSqlSession();
        UserDao mapper=sqlSession.getMapper(UserDao.class);
        int number = mapper.update_User(new User("韩跑跑",28));
        System.out.println(number);
        //必须要提交事务
        sqlSession.commit();
        sqlSession.close();

    }
View Code
复制代码

查(传入是对象的时候,也依然使用#{属性值}来取值)

复制代码
<!--    parameterType 输入参数的类型-->
   
 <select id="getUserId" resultType="com.ljm.pojo.User" parameterType="int" >
        select * from mybatis.user where id =#{id}
    </select>

<!--   单传一个值的话(不是对象),对象中没有id这个属性也行-->
View Code
复制代码
复制代码
    public void test_getUserbyID(){
        SqlSession sqlSession=MybatisUtils.getSqlSession();
        UserDao mapper=sqlSession.getMapper(UserDao.class);
        User user = mapper.getUserId(3);
        System.out.println(user);
        sqlSession.close();
    }
View Code
复制代码

 模糊查询

 

 

自动提交事务:true

复制代码
    public static SqlSession getSqlSession(){
//       SqlSession sqlSession= sqlSessionFactory.openSession();
//       return sqlSession;
        //优化   true自动提交()增删改
        return sqlSessionFactory.openSession(true);
    }
View Code
复制代码

 

 

 

万能的Map

当实体类或者数据库中的表,字段过多, 需要传递多个参数, 就可以使用Map(或者注解)

遇到查询的时候,标签属性加上返回类型 resultMap=""

int getUserCount(Map<String, String> map);
复制代码
    <insert id="addUser2" parameterType="map" >
        insert into mybatis.user(name,age) value (#{n},#{a});
    </insert>

<!--   value (#{n},#{a}   里面的n a 对应传的参里面的 n a -->
View Code
复制代码
复制代码
    public void test_addUser2(){
        SqlSession sqlSession=MybatisUtils.getSqlSession();
        UserDao mapper=sqlSession.getMapper(UserDao.class);
        Map<String, Object> map = new HashMap<>();
        map.put("n","卫龙");
        map.put("a","18");
//对应XML里面的n a
        int number = mapper.addUser2(map);
        System.out.println(number);
        //必须要提交事务
        sqlSession.commit();
        sqlSession.close();

    }
View Code
复制代码

 

模糊查询

1.在JAVA代码中传递通配符% %

List<User> userList = mapper.getUserLike("%卫%");

2.在SQL拼接使用通配符(推荐)

复制代码
    <select id="getUserLike" resultType="com.ljm.pojo.User" >
        select * from mybatis.user where name like "%"#{s}"%"
    </select>




<!--    <select id="getUserLike" resultType="com.ljm.pojo.User" >-->
<!--        select * from mybatis.user where name like CONCAT('%',#{s},'%')-->
<!--    </select>-->
View Code
复制代码

 

posted @   磕伴  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示