java Mybatis 基础操作

1.查询所有     

    <!-- 查询所有 -->
    <select id="findAll" resultType="com.wyc.domain.User">
        select * from user;
    </select>

2.Insert    

username =#{username}   前面对象数据库中列  后面对应User类中的 属性  且名字一致

    <insert id="saveUser" parameterType="com.wyc.domain.User">
        insert into user(username,address,sex,birthday)values(#{username},#{address},#{sex},#{birthday});
    </insert>
       public void testSave(){
        User user = new User();
        user.setUsername("modify User property");
        user.setAddress("北京市顺义区");
        user.setSex("男");
        user.setBirthday(new Date());
        执行保存方法
        userDao.saveUser(user);}

    这样我们不知道 插入以后的 id是多少   可以 添加 selectKey    

    keyColumn="id"对应 数据库中列   keyProperty="id"对应属性   order 再insert 之后   

    <insert id="saveUser" parameterType="com.wyc.domain.User">
        <selectKey  keyColumn="id" keyProperty="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

     username =#{username}   前面对象数据库中列  后面对应User类中的 属性  且名字一致

    <!--根据id更新-->
    <update id="updateUser" parameterType="com.wyc.domain.User">
        update user set username =#{username},address=#{address},sex=#{sex},birthday=#{birthday}where id=#{id}
    </update>
    public void updateUser(){
        User user = new User();
        user.setId(49);
        user.setUsername("wyc");
        user.setAddress("重庆市顺义区");
        user.setSex("女");
        user.setBirthday(new Date());
        userDao.updateUser(user);}

4.delete     

参数是int   Integer都可以      id=#{uid}  前面对象数据库中列  后面需要动态填入

    <!--根据id删除-->
    <delete id="deleteUser" parameterType="Integer">
        delete from user where id=#{uid}
    </delete>
 public void deleteUSer(){
        userDao.deleteUser(46);
    }

5.模糊查询

         参数是String 类型   返回值是User 类型             参数需要手动加上   % %

    <!-- 根据名字模糊查询-->
    <select id="findByName" parameterType="String" resultType="com.wyc.domain.User">
        select * from user where username like #{name}
    </select>
    public void findByName(){
        List<User> users = userDao.findByName("%王%");
        for (User user : users) {
            System.out.println(user);
        }}

5.聚合查询     

 count(id)       不能有空格 

    <!--聚合函数 总个数-->
    <select id="findTotal" resultType="int">
        select count(id) from user ;
    </select>
     public void findTotal(){
        int total = userDao.findTotal();
        System.out.println(total);}

数据类列名 和 属性名不对应时    两种解决方法  

      1. sql  语句起 别名   

<select id="findAll" resultType="com.wyc.domain.User">
    select id as userId,username as userName,address as userAddress,sex as userSex,birthday as userBirthday from user;
</select>

    2.  手动配置对应关系

   配置 查询结果的列名和实体类的属性名的对应关系 
    <resultMap id="userMap" type="uSeR">
        主键字段的对应 
        <id property="userId" column="id"></id>
        非主键字段的对应
        <result property="userName" column="username"></result>
        <result property="userAddress" column="address"></result>
        <result property="userSex" column="sex"></result>
        <result property="userBirthday" column="birthday"></result>
    </resultMap>

     查询所有 
    <select id="findAll" resultMap="userMap">
        select * from user;
    </select>

Properties标签   专门用于抽取  property 这种标签

 在主配置文件中

<configuration>
    <environments default="mysql">
        <environment id="mysql">   
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                                   配置连接数据库的4个基本信息 
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="123"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/wyc/Dao/UserDao.xml"/>  
    </mappers>
</configuration>
<configuration>
    <properties>
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/test"/>
        <property name="username" value="root"/>
        <property name="password" value="123"/>
    </properties>
    <environments default="mysql">
        <environment id="mysql">    
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                                配置连接数据库的4个基本信息 
                <property name="driver" value="${driver}"/>    {名字对应上面的name}
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

   好处是property配置可以放在配置文件中 

resource标签指定资源位置

driver=com.mysql.cj.jdbc.Driver                配置文件中
url=jdbc:mysql://localhost:3306/test
username=root
password=123
    <properties resource="jdbcConfig.properties">    配置文件resource下直接引用

    </properties>
    <environments default="mysql">
        <environment id="mysql">   
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                        配置连接数据库的4个基本信息
                <property name="driver" value="${driver}"/>      {对应配置文件中的键}
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

url标签 指定资源位置

    <properties url="file:///D:\java\Java源码\mybatis_01\src\main\resources\jdbcConfig.properties">

    </properties>
    <environments default="mysql">
        <environment id="mysql">    
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                                配置连接数据库的4个基本信息 
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

typeAliases

        主配置文件中 配置后   映射文件中  参数类型就可以使用 alias 指定的 名字  不区分大小写

<typeAliases>
        typeAlias用于配置别名。type属性指定的是实体类全限定类名。alias属性指定别名,当指定了别名就再区分大小写 
        <typeAlias type="com.itheima.domain.User" alias="user"></typeAlias>
</typeAliases>

       映射文件中  参数类型就可以使用 alias 指定的 名字  不区分大小写

    <!--根据id更新-->
    <update id="updateUser" parameterType="user">
        update user set username =#{username},address=#{address},sex=#{sex},birthday=#{birthday}where id=#{id}
    </update>

pacakge

    效果与typeAlias  标签效果一样   并且类名就是别名

  <typeAliases>
  用于指定要配置别名的包,当指定之后,该包下的实体类都会注册别名,并且类名就是别名,不再区分大小写-
        <package name="com.itheima.domain"></package>
    </typeAliases>

    也可以用于指定 映射的接口 包     当指定了之后就不需要在写mapper以及resource或者class了 -->

    <mappers>
        <package name="com.wyc.Dao"/>
    </mappers>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值