mybatis学习笔记-基本使用

1.mapper约束

//mapper约束
		<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

2.单表crud操作
3.参数与返回值

1.查询全部
<select id="findAll" resultType="com.zs.domain.User">
    select * from  user ;
      </select>
2.插入数据
标签<selectKey>:配置插入操作后,获取插入数据的id
<insert id="saveUser" parameterType="user">
        <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER" >
            select last_insert_id();
        </selectKey>
        insert into user (username,address,sex,birthday)values (#{username},#{address},#{sex},#{birthday});
    </insert>
3.更新操作
<update id="updateUser" parameterType="user">
        update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where  id=#{id};
    </update>
4.删除操作
    <delete id="deleteUser" parameterType="java.lang.Integer">
        delete  from  user where  id=#{uid};
    </delete>
5.通过id查找数据
    <select id="findById" parameterType="INT" resultType="com.zs.domain.User">
        select * from  user where id =#{uid};
    </select>
6.通过名字查找数据
前者是Statement对象的字符串拼接SQL,更高效但是不安全
后者是PrepatedStatement的参数占位符
    <!--    <select id="findByName" parameterType="string" resultType="com.zs.domain.User">-->
    <!--        select * from  user where username like %${name}%;-->
    <!--    </select>-->
    <select id="findByName" parameterType="string" resultType="com.zs.domain.User">
        select * from  user where username like #{name};
    </select>
7.查找有几个用户
    <select id="findTotal" resultType="int">
        select count(id) from user ;
    </select>
8.resultMap
<resultMap id="userMap" type="user">
        <id property="id" column="id"></id>
        <result property="username" column="username"></result>
        <result property="address" column="address"></result>
        <result property="sex" column="sex"></result>
        <result property="birthday" column="birthday"></result>
    </resultMap>
9.抽取重复的sql语句
<sql id="defaultUser">
        select  * from user
    </sql>
    
    <select id="findAll" resultMap="userMap">
        <include refid="defaultUser"></include>
      </select>
10.使用userMap查询
<select id="findById" parameterType="INT" resultMap="userMap">
        select * from  user where id =#{uid};
    </select>

    <select id="findByName" parameterType="string" resultMap="userMap">
        select * from  user where username like #{name};
    </select>

4.配置细节,标签的使用

1. 配置properties
可以在标签内部配置连接数据库的信息,也可以通过属性引用外部配置文件信息
resource属性:用于指定配置文件的位置,是按照类路径的写法来写,且必须存在于类路径下
url属性:是要求按照url写法来写地址
URL:Uniform Resource Locator 统一资源定位符,是可以唯一标识一个资源的位置
写法 http://localhost:8080/mybatisserver/demo1Servlet
        协议      主机      端口      URI
 URI:Uniform Resource Identifier 统一资源标识符。它是应用中可以唯一定位一个资源的。
<properties>
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC"/>
        <property name="username" value="root"/>
        <property name="password" value="密码"/>
    </properties>
<properties resource="jdbcConfig.properties">
    </properties>
<properties url="file:///C:/Users/地址/src/main/resources/jdbcConfig.properties">
    </properties>
 2. typeAliases标签
	使用typeAliases配置别名,配置domain中的类名
    typeAlias用于配置别名,type属性指定的是实体类全限定类名。alias属性指定别名,当指定了别名就在区分大小写
<typeAliases>
        <typeAlias type="com.zs.domain.User" alias="user"></typeAlias>
    </typeAliases>
用于指定要配置别名的包,指定后包下的实体类都注册别名,且不分大小写
<typeAliases>
            <package name="com.zs.domain"/>
    </typeAliases>
3. mappers标签
	配置映射文件的位置
	
4.package标签是用于指定dao接口所在的包,当指定后就不需要再写mapper以及resource与class
<mappers>
</mapper>        <package name="com.zs.dao"/>
    </mappers>
<mappers>
        <mapper  resource="com/zs/dao/IUserDao.xml"></mapper>
    </mappers>

5.OGNL表达式

Object  Graphic Navigation Language
对象			图			导航			语言
它是通过对象的取值方法来获取数据。在写法上把get给省略了
例:类中的写法user.getUsername()
OGNL表达式写法user.username
mybatis在parameterType中已经提供属性所需得嘞,所以不需要对象名直接username。

6.传递简单类型

1.传递pojo对象
	mybatis使用ognl表达式解析对象字段的值,#{}或者${}中的值为pojo属性名称
2.传递pojo包装对象
	开发中通过pojo传递综合的查询条件,不仅包括用户查询条件还包括其它的查询条件,此时可以利用包装对象传递输入参数。
<select id="findUserByVo" parameterType="QueryVo" resultMap="userMap">
        select * from user where username like #{user.username}
    </select>
public class QueryVo {
    private User user;

    private List<Integer> ids;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public List<Integer> getIds() {
        return ids;
    }

    public void setIds(List<Integer> ids) {
        this.ids = ids;
    }
}

7.jdbcConfig.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
jdbc.username=root
jdbc.password=密码

8.log4j.properties

log4j.rootCategory=debug, CONSOLE, LOGFILE

log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.latout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值