Mybatis基础整理

来源:互联网 发布:淘宝购物车点不开 编辑:程序博客网 时间:2024/06/06 09:19

Mybatis

  1. 创建Java工程
  2. 加入jar包
  3. 配置log4j.properties
  4. 在classpath下创建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>    <!-- 和spring整合后 environments配置将废除-->    <environments default="development">        <environment id="development">        <!-- 使用jdbc事务管理-->            <transactionManager type="JDBC" />        <!-- 数据库连接池-->            <dataSource type="POOLED">                <property name="driver" value="com.mysql.jdbc.Driver" />                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />                <property name="username" value="root" />                <property name="password" value="123" />            </dataSource>        </environment>    </environments></configuration>

这是Mybatis的核心配置文件
5. POJO类
6. sql映射文件,在classpath下的sqlmap目录下创建sql映射文件User.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"><mapper namespace="test"></mapper>

namespace:命名空间,用于隔离sql活动
7. 加载映射文件 ,将User.xml添加在SqlMapConfig.xml中

<mappers>        <mapper resource="sqlmap/User.xml"/></mappers>
  1. 查询
<!-- 根据id获取用户信息 -->    <select id="findUserById" parameterType="int" resultType="com.demo.mybatis.po.User">        select * from user where id = #{id}    </select>

parameterType:定义输入到sql中的映射类型。#{id}表示使用preparedstatement
resultType:定义结果映射类型
9. 模糊查询

<!-- 自定义条件查询用户列表 -->    <select id="findUserByUsername" parameterType="string"             resultType="com.demo.mybatis.po.User">       select * from user where username like '%${value}%'     </select>

parameter:定义输入到sql中的映射类型,${value}表示使用参数将${value}替换,做字符串的拼接
10. #{}${}
#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,
自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。 #{}可以接收简单类型值或pojo属性值。
如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。
${}表示拼接sql串,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换,
${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。
11. selectOne(),selectList()
12. 插入

<!-- 添加用户 -->    <insert id="insertUser" parameterType="com.demo.mybatis.po.User">      insert into user(username,birthday,sex,address)       values(#{username},#{birthday},#{sex},#{address})    </insert>
  1. mysql自增主键返回
<insert id="insertUser" parameterType="com.demo.mybatis.po.User">        <!-- selectKey将主键返回,需要再返回 -->        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">            select LAST_INSERT_ID()        </selectKey>       insert into user(username,birthday,sex,address)        values(#{username},#{birthday},#{sex},#{address});    </insert>

此时去user.getId()就能取得id值了,由于mysql的自增主键是插入后才生成,所以使用AFTER
14. mysql使用uuid实现主键

<insert  id="insertUser" parameterType="com.demo.mybatis.po.User"><selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">select uuid()</selectKey>insert into user(id,username,birthday,sex,address)          values(#{id},#{username},#{birthday},#{sex},#{address})</insert>
  1. 删除
<!-- 删除用户 -->    <delete id="deleteUserById" parameterType="int">        delete from user where id=#{id}    </delete>
  1. 修改
<!-- 更新用户 -->    <update id="updateUser" parameterType="com.demo.mybatis.po.User">        update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}        where id=#{id}    </update>
  1. SqlSessionFactoryBuilder只需要使用一次,通常以单例模式管理SqlSessionFactory
  2. 在finally中关闭SqlSession
  3. Mapper动态代理开发规范
    • Mapper.xml中的namespace与mapper接口的类路径相同
    • Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
    • Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType类型相同
    • Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
  4. 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"><mapper namespace="com.demo.mybatis.mapper.UserMapper"><!-- 根据id获取用户信息 -->    <select id="findUserById" parameterType="int" resultType="com.demo.mybatis.po.User">        select * from user where id = #{id}    </select><!-- 自定义条件查询用户列表 -->    <select id="findUserByUsername" parameterType="java.lang.String"             resultType="com.demo.mybatis.po.User">       select * from user where username like '%${value}%'     </select><!-- 添加用户 -->    <insert id="insertUser" parameterType="com.demo.mybatis.po.User">    <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">        select LAST_INSERT_ID()     </selectKey>      insert into user(username,birthday,sex,address)       values(#{username},#{birthday},#{sex},#{address})    </insert></mapper>
  1. mapper接口
Public interface UserMapper {    //根据用户id查询用户信息    public User findUserById(int id) throws Exception;    //查询用户列表    public List<User> findUserByUsername(String username) throws Exception;    //添加用户信息    public void insertUser(User user)throws Exception; }
  1. 加载UserMapper.xml文件,
<!-- 加载映射文件 -->  <mappers>    <mapper resource="mapper/UserMapper.xml"/>  </mappers>

修改SqlMapConfig.xml
23. SqlMapConfig.xml自定义别名

<typeAliases>    <!-- 单个别名定义 -->    <typeAlias alias="user" type="com.demo.mybatis.po.User"/>    <!-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以) -->    <package name="com.demo.mybatis.po"/>    <package name="onepackage"/></typeAliases>
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝卖家号虚假交易违规怎么办 扣扣申诉成功后怎么办 微信二维码收款异常怎么办 国际包裹被退回去了怎么办 京东账号手机号换了怎么办 换手机号了淘宝账号怎么办 qq登录id密码忘记怎么办 iphone商店密码忘记了怎么办 淘宝账号被限制登入怎么办 手机换号码了qq登不上怎么办 换手机了qq登不上怎么办 微信帐号和密码错误怎么办 高考生忘记登录密码怎么办 高考生登录密码丢了怎么办 高考志愿登录密码忘了怎么办 电视声音和画面不同步怎么办 苹果5s不能开机怎么办 红米手机老是闪退怎么办 苹果7plus打字卡怎么办 手机总是出现无响应怎么办 手机淘宝怎么打不开了怎么办 淘宝买东西卖家不同意退货怎么办 苹果自带浏览器不能上网怎么办 淘宝账号买不了东西怎么办 支付宝被限制登录怎么办 微信登录不上 钱怎么办 淘宝账号买家权限被限制怎么办 淘宝中店新品打不开怎么办 旺旺号被限制有退款怎么办 登陆微信收不到验证码怎么办 淘宝店注册成功后怎么办 充电宝掉进水里怎么办 空光盘读不出来怎么办 苹果8plus丢了怎么办 苹果8plus掉了怎么办 淘宝账户被限制使用怎么办 飞利浦电脑显示器黑屏怎么办打开 微信忘记密码手机号停用怎么办 淘宝账号登录密码忘记了怎么办 淘宝支付密码输错了怎么办 淘宝支付密码忘记了怎么办