Mybatis知识点
来源:互联网 发布:重庆时时计划软件 编辑:程序博客网 时间:2024/06/06 10:05
需要用到的配置文件有log4j.properties
用于打印日志
# Global logging configurationlog4j.rootLogger=DEBUG, stdout# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
由于用Mybatis一般都是在ssm中
所以直接记录与配置无关的Mapper.xml和接口
Mapper.xml中的
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace:命名空间,用于隔离sql --><!-- 还有一个很重要的作用,使用动态代理开发DAO,1. namespace必须和Mapper接口类路径一致 --><mapper namespace="cn.itcast.mybatis.mapper.UserMapper"><!-- 保存用户 --><insert id="saveUser" parameterType="cn.itcast.mybatis.pojo.User"> <!-- selectKey 标签实现主键返回 --> <!-- keyColumn:主键对应的表中的哪一列 --> <!-- keyProperty:主键对应的pojo中的哪一个属性 --> <!-- order:设置在执行insert语句前执行查询id的sql,孩纸在执行insert语句之后执行查询id的sql --> <!-- resultType:设置返回的id的类型 --> <selectKey keyColumn="id" keyProperty="id" order="AFTER" resultType="int"> SELECT LAST_INSERT_ID() </selectKey> INSERT INTO `user` (username,birthday,sex,address) VALUES (#{username},#{birthday},#{sex},#{address})</insert> <!-- 如果返回多个结果,mybatis会自动把返回的结果放在list容器中 --> <!-- resultType的配置和返回一个结果的配置一样 --> <select id="queryUserByUsername1" parameterType="string" resultType="cn.itcast.mybatis.pojo.User"> SELECT * FROM `user` WHERE username LIKE #{username} </select></mapper>
SqlMapConfig.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> <!-- 是用resource属性加载外部配置文件 --> <properties resource="db.properties"> <!-- 在properties内部用property定义属性 --> <property name="jdbc.username" value="root123" /> <property name="jdbc.password" value="root123" /> </properties> <typeAliases> <!-- 单个别名定义 --> <typeAlias alias="user" type="cn.itcast.mybatis.pojo.User" /> <!-- 批量别名定义,扫描整个包下的类,别名为类名(大小写不敏感) --> <package name="cn.itcast.mybatis.pojo" /> <package name="其它包" /> </typeAliases> <!-- 和spring整合后 environments配置将废除 --> <environments default="development"> <environment id="development"> <!-- 使用jdbc事务管理 --> <transactionManager type="JDBC" /> <!-- 数据库连接池 --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <!-- 加载映射文件 --> <mappers> <package name="cn.itcast.mybatis.mapper"/> </mappers></configuration>
resultMap的使用
<!-- resultMap最终还是要将结果映射到pojo上,type就是指定映射到哪一个pojo --> <!-- id:设置ResultMap的id --> <resultMap type="order" id="orderResultMap"> <!-- 定义主键 ,非常重要。如果是多个字段,则定义多个id --> <!-- property:主键在pojo中的属性名 --> <!-- column:主键在数据库中的列名 --> <id property="id" column="id" /> <!-- 定义普通属性 --> <result property="userId" column="user_id" /> <result property="number" column="number" /> <result property="createtime" column="createtime" /> <result property="note" column="note" /> </resultMap> <!-- 查询所有的订单数据 --> <select id="queryOrderAll" resultMap="orderResultMap"> SELECT id, user_id, number, createtime, note FROM `order` </select></mapper>
动态sql
where 和if
<!-- 根据条件查询用户 --><select id="queryUserByWhere" parameterType="user" resultType="user"> SELECT id, username, birthday, sex, address FROM `user`<!-- where标签可以自动添加where,同时处理sql语句中第一个and关键字 --> <where> <if test="sex != null"> AND sex = #{sex} </if> <if test="username != null and username != ''"> AND username LIKE '%${username}%' </if> </where></select>
sql片段
以及引用
<!-- 根据条件查询用户 --><select id="queryUserByWhere" parameterType="user" resultType="user"> <!-- SELECT id, username, birthday, sex, address FROM `user` --> <!-- 使用include标签加载sql片段;refid是sql片段id --> SELECT <include refid="userFields" /> FROM `user` <!-- where标签可以自动添加where关键字,同时处理sql语句中第一个and关键字 --> <where> <if test="sex != null"> AND sex = #{sex} </if> <if test="username != null and username != ''"> AND username LIKE '%${username}%' </if> </where></select><!-- 声明sql片段 --><sql id="userFields"> id, username, birthday, sex, address</sql>
foreach标签的使用
<!-- 根据ids查询用户 --><select id="queryUserByIds" parameterType="queryVo" resultType="user"> SELECT * FROM `user` <where> <!-- foreach标签,进行遍历 --> <!-- collection:遍历的集合,这里是QueryVo的ids属性 --> <!-- item:遍历的项目,可以随便写,,但是和后面的#{}里面要一致 --> <!-- open:在前面添加的sql片段 --> <!-- close:在结尾处添加的sql片段 --> <!-- separator:指定遍历的元素之间使用的分隔符 --> <foreach collection="ids" item="item" open="id IN (" close=")" separator=","> #{item} </foreach> </where></select>
一对一查询
<resultMap type="order" id="orderUserResultMap"> <id property="id" column="id" /> <result property="userId" column="user_id" /> <result property="number" column="number" /> <result property="createtime" column="createtime" /> <result property="note" column="note" /> <!-- association :配置一对一属性 --> <!-- property:order里面的User属性名 --> <!-- javaType:属性类型 --> <association property="user" javaType="user"> <!-- id:声明主键,表示user_id是关联查询对象的唯一标识--> <id property="id" column="user_id" /> <result property="username" column="username" /> <result property="address" column="address" /> </association></resultMap><!-- 一对一关联,查询订单,订单内部包含用户属性 --><select id="queryOrderUserResultMap" resultMap="orderUserResultMap"> SELECT o.id, o.user_id, o.number, o.createtime, o.note, u.username, u.address FROM `order` o LEFT JOIN `user` u ON o.user_id = u.id</select>
一对多查询
<resultMap type="user" id="userOrderResultMap"> <id property="id" column="id" /> <result property="username" column="username" /> <result property="birthday" column="birthday" /> <result property="sex" column="sex" /> <result property="address" column="address" /> <!-- 配置一对多的关系 --> <collection property="orders" javaType="list" ofType="order"> <!-- 配置主键,是关联Order的唯一标识 --> <id property="id" column="oid" /> <result property="number" column="number" /> <result property="createtime" column="createtime" /> <result property="note" column="note" /> </collection></resultMap><!-- 一对多关联,查询订单同时查询该用户下的订单 --><select id="queryUserOrder" resultMap="userOrderResultMap"> SELECT u.id, u.username, u.birthday, u.sex, u.address, o.id oid, o.number, o.createtime, o.note FROM `user` u LEFT JOIN `order` o ON u.id = o.user_id</select>
阅读全文
0 0
- MyBatis知识点
- mybatis知识点
- MyBatis知识点
- mybatis知识点
- Mybatis知识点
- mybatis知识点学习
- mybatis小知识点
- MyBatis知识点1
- mybatis知识点总结
- mybatis事务相关知识点
- Mybatis知识点备忘
- MyBatis知识点学习
- Mybatis知识点回顾/总结
- mybatis学习知识点摘录
- MyBatis的知识点
- mybatis相关知识点
- Mybatis知识点整理
- Mybatis相关知识点
- MVP一级列表购物车自定义View
- Ubuntu(乌班图)系统下搭建Gerrit服务器及使用过程中会遇到的一些问题
- wait和notify方法
- 【ML学习笔记】5:机器学习中的数学基础5(张量,哈达玛积,生成子空间,超平面,范数)
- 【Scikit-Learn 中文文档】4 线性和二次判别分析
- Mybatis知识点
- ConcurrentHashMap的实现原理
- 错误笔记:JDBC向oracle数据库中插入数据遇到线程阻塞问题
- 主机不能拷贝东西到虚拟机上 解决
- php验证码工具类
- drawlayout点击请求不同数据并XListView刷新
- mvp购物车
- 00-常用方法
- Android组件学习笔记(分享文字以及图片功能)