当前位置: 首页 > news >正文

下部刚刚是上部

6sql映射文件

常用sql标签

    <select id=""></select><insert id=""></insert><update id=""></update><delete id=""></delete>

常用属性

 resultType 返回类型通过包名 类名 标记返回值类型 (单条数据的类型)
  parameterType 传入参数  可以省略不写要与动态参数标记 #{} 搭配使用

注意: 根据对应关系 指定传入的参数
1传简单数据类型的单个参数 (基本数据类型 字符串)

#{不需要特殊对应 都可以得到 尽量使用形参名}

接口

User getUser2(Integer id);

sql映射

 <select id="getUser2"  resultType="com.javasm.entity.User">select * from `user` where id = #{id}</select>

测试类

    @Testpublic void userSelectDemo2(){
​SqlSession sqlSession = MyBatisHealper.getSqlSession();UserDao mapper =sqlSession.getMapper(UserDao.class);User user = mapper.getUser2(2);System.out.println(user);MyBatisHealper.backSqlSession(sqlSession);
​}
2传对象类型 包含多个参数 (各种实体对象)

#{与对象属性名对应}

接口

User getUser3(User queryUser);

sql映射

    <select id="getUser3" resultType="com.javasm.entity.User">select * from `user` where `name` = #{name}  and `password` = #{password}
​</select>

测试类

    @Testpublic void userSelectDemo3(){
​SqlSession sqlSession = MyBatisHealper.getSqlSession();UserDao mapper =sqlSession.getMapper(UserDao.class);User queryUser = new User("张三", "abc123");User user = mapper.getUser3(queryUser);System.out.println(user);MyBatisHealper.backSqlSession(sqlSession);
​}
3传map对象 包含多个参数 (直接使用map) 了解即可 不建议使用

#{与map的key对应}

接口

User getUser4(Map paramMap);

sql映射

    <select id="getUser4" resultType="com.javasm.entity.User">select * from `user` where `name` = #{name}  and `password` = #{password}
​</select>

测试类

    @Testpublic void userSelectDemo4(){
​SqlSession sqlSession = MyBatisHealper.getSqlSession();UserDao mapper =sqlSession.getMapper(UserDao.class);
​//传mapHashMap<String, Object> paramMap = new HashMap<>();paramMap.put("name","张四");paramMap.put("password","abc123");
​User user = mapper.getUser4(paramMap);System.out.println(user);MyBatisHealper.backSqlSession(sqlSession);
​}
4通过注解自动封装map 建议使用

接口

User getUser5(@Param("username") String username,@Param("password") String password);

sql映射文件

    <select id="getUser5" resultType="com.javasm.entity.User">select * from `user` where `name` = #{username}  and `password` = #{password}</select>

测试类

    @Testpublic void userSelectDemo5(){
​SqlSession sqlSession = MyBatisHealper.getSqlSession();UserDao mapper =sqlSession.getMapper(UserDao.class);
​User user = mapper.getUser5("张三1","abc123");System.out.println(user);MyBatisHealper.backSqlSession(sqlSession);
​}
5通过list对象 传入多个参数

(有特殊固定用法 配合动态sql标签使用 普通不要使用)

接口

User getUser6(List params);

sql映射

    <select id="getUser6" resultType="com.javasm.entity.User">select * from `user` where `name` = #{list[0]}  and `password` = #{list[1]}
​</select>

测试类

    @Testpublic void userSelectDemo6(){
​SqlSession sqlSession = MyBatisHealper.getSqlSession();UserDao mapper =sqlSession.getMapper(UserDao.class);
​List<String> params = new ArrayList<String>();params.add("李四");params.add("123abc");User user = mapper.getUser6(params);System.out.println(user);MyBatisHealper.backSqlSession(sqlSession);
​}

主要使用的方式 1简单数据,2对象数据,4注解转map

6.1select 查询标签
1查单条

接口

User getUser();

sql映射

    <select id="getUser"   resultType="com.javasm.entity.User">select * from `user` where id = 1</select>

测试

    @Testpublic void userSelectDemo1(){
​SqlSession sqlSession = MyBatisHealper.getSqlSession();UserDao mapper =sqlSession.getMapper(UserDao.class);User user = mapper.getUser();System.out.println(user);MyBatisHealper.backSqlSession(sqlSession);
​}
2查集合对象

接口

List<User> listUser();

sql映射

<select id="listUser" resultType="com.javasm.entity.User">select * from `user`</select>

测试

    @Testpublic void mybatisDemo2InterfaceRef(){//通过工具类拿连接SqlSession sqlSession = MyBatisHealper.getSqlSession();//接口映射//dao实现类的代码UserDao userDaoImpl = sqlSession.getMapper(UserDao.class);//调用方法List<User> users = userDaoImpl.listUser();System.out.println(users);//归还连接MyBatisHealper.backSqlSession(sqlSession);
​}
​
3 统计查询条数

接口

 //统计总条数Integer countUser();

sql映射

    <select id="countUser" resultType="java.lang.Integer">select count(1) from `user`
​</select>

测试

    @Testpublic void userCountDemo(){
​SqlSession sqlSession = MyBatisHealper.getSqlSession();UserDao mapper =sqlSession.getMapper(UserDao.class);
​
​Integer resNum = mapper.countUser();
​System.out.println(resNum);MyBatisHealper.backSqlSession(sqlSession);
​}
4模糊查询

接口

List<User> listUserByName(String name);

sql映射

通过CONCAT('%',#{name},'%') 拼接前后模糊匹配符 可以直接与页面传来的参数结合使用

    <select id="listUserByName" resultType="com.javasm.entity.User">
​select * from `user` where `name` like CONCAT('%',#{name},'%')
​</select>

测试

    @Testpublic void userListByNameDemo(){
​SqlSession sqlSession = MyBatisHealper.getSqlSession();UserDao mapper =sqlSession.getMapper(UserDao.class);
​
​List<User> users = mapper.listUserByName("张");
​System.out.println(users);MyBatisHealper.backSqlSession(sqlSession);
​}

5动态升序降序

#{} 拼参数 使用占位符?

${} 拼语法 没有使用占位符 有sql注入风险 尽量少用

接口

 //动态升序降序List<User> listUserByOrder(String aOrd);

sql映射

    <select id="listUserByOrder" resultType="com.javasm.entity.User">select * from `user`order by age ${aOrd}
​
​</select>

测试

    public void userListByOrderDemo(){
​SqlSession sqlSession = MyBatisHealper.getSqlSession();UserDao mapper =sqlSession.getMapper(UserDao.class);
​
​List<User> users = mapper.listUserByOrder("desc");
​System.out.println(users);MyBatisHealper.backSqlSession(sqlSession);
​}

6.2 insert 添加标签
通过map插入数据

接口

//添加用户Integer insertUser(@Param("id")Integer id,@Param("name")String name);
​

sql映射

    <insert id="insertUser">insert into `user` (id,`name`) VALUES (#{id},#{name})</insert>

测试类

    @Testpublic void insertUserDemo1(){
​SqlSession sqlSession = MyBatisHealper.getSqlSession();UserDao mapper =sqlSession.getMapper(UserDao.class);
​Integer i = mapper.insertUser(6, "老王2");
​System.out.println(i);//添加 修改 删除 需要提交MyBatisHealper.backAndCommitSqlSession(sqlSession);
​}
通过对象插入数据

接口

 //添加用户2Integer insertUser2(User inputUser);

sql映射

    <insert id="insertUser2">insert into `user` (id,`name`,`password`,age,user_addr)VALUES (#{id},#{name},#{password},#{age},#{userAddr})</insert>

测试类

    @Testpublic void insertUserDemo2(){
​SqlSession sqlSession = MyBatisHealper.getSqlSession();UserDao mapper =sqlSession.getMapper(UserDao.class);
​User inputUser = new User(7, "小老王", "abc123", 13, "你家隔壁");
​Integer i = mapper.insertUser2(inputUser);
​System.out.println(i);//添加 修改 删除 需要提交MyBatisHealper.backAndCommitSqlSession(sqlSession);
​}
获取自增主键

接口

    //添加用户3//使用自增 并获取自增编号Integer insertUser3(User inputUser);

sql映射

<!--  useGeneratedKeys="true" 开启获取自增主键keyProperty="id"        放入插入对象的某个属性--><insert id="insertUser3" useGeneratedKeys="true" keyProperty="id">insert into `user` (`name`,`password`,age,user_addr)VALUES (#{name},#{password},#{age},#{userAddr})</insert>

测试类

    @Testpublic void insertUserDemo3(){
​SqlSession sqlSession = MyBatisHealper.getSqlSession();UserDao mapper =sqlSession.getMapper(UserDao.class);
​User inputUser = new User("小老王3", "abc123", 13, "你家隔壁");
​Integer i = mapper.insertUser3(inputUser);//插入的对象 id的位置 会存入获取到的自增主键System.out.println(inputUser);//添加 修改 删除 需要提交MyBatisHealper.backAndCommitSqlSession(sqlSession);
​}
​
6.3修改标签

接口

    //修改用户Integer updateUser(User inputUser);

sql映射

    <update id="updateUser">update `user` set  `name` = #{name},`password` = #{password}where id = #{id}</update>

测试类

    @Testpublic void updateUserDemo(){
​SqlSession sqlSession = MyBatisHealper.getSqlSession();UserDao mapper =sqlSession.getMapper(UserDao.class);
​User inputUser = new User(8,"小老王3", "abc123", null, null);
​Integer i = mapper.updateUser(inputUser);
​System.out.println(inputUser);//添加 修改 删除 需要提交MyBatisHealper.backAndCommitSqlSession(sqlSession);
​}

注意 update 修改语句 一定要带where条件

6.4删除标签

接口

    //删除用户Integer deleteUser(Integer id);

sql映射

    <delete id="deleteUser">
​delete from `user` where id = #{id}</delete>

测试类

    @Testpublic void deleteUserDemo(){
​SqlSession sqlSession = MyBatisHealper.getSqlSession();UserDao mapper =sqlSession.getMapper(UserDao.class);
​
​Integer i = mapper.deleteUser(9);//添加 修改 删除 需要提交MyBatisHealper.backAndCommitSqlSession(sqlSession);
​}

使用emp表 测试课堂案例

http://www.dtcms.com/a/507100.html

相关文章:

  • 自动化产线效率低,主要看这四个环节
  • 如何查询网站开发语言杭州企业网站制作
  • sql server网站建设电子商务网络营销的概念
  • 网页制作基础教程代码网站seo软件
  • kafka中server.properties中的关键配置
  • 帧率、分辨率、码率
  • Linux补充01:HTTPS协议原理
  • 2025全球风电盛会CWP今日开展
  • Linux网络 网络层
  • 一个专门做各种恐怖片的电影网站怎样用记事本做网站
  • 织梦网站后台密码wordpress forandroid
  • STP的配置
  • 解锁细胞青春密码:美国 WJCZ 麦角硫因时光胶囊,用前沿生物科技对抗肌肤衰老
  • CTFSHOW—WEB4
  • MySQL InnoDB 状态(SHOW ENGINE INNODB STATUS)深度分析与性能优化建议
  • 全感知智慧校园场景大联动解决方案PPT(53页)
  • 分享一个成品的grafana表
  • sward V2.1.1版本发布,支持在线安装与消息配置等功能
  • 机器学习基础入门(第六篇):深度学习的兴起与神经网络基础
  • 京东联盟新手没有网站怎么做推广博物馆展陈设计公司
  • 【数据结构】最长的最短路径的求解
  • 网站后台管理产品排序网站被黑是怎么回事
  • jinji2模板
  • Linux route
  • 接10月12日---队列笔记
  • 第四章 串、数组和广义表——课后习题解练【数据结构(c语言版 第2版)】
  • 从C语言标准揭秘C指针:第 10 章:指针与动态内存:堆区内存的生命周期管理
  • 设计汽车网站外贸建站服务器怎么选
  • 微网站制作超链接太原网站开发工程师
  • 服装生产管理系统|基于SpringBoot和Vue的服装生产管理系统(源码+数据库+文档)