Mybsatis基础使用二

195 阅读2分钟

1/28/2018 3:05:44 PM

##mybatis的基础使用 ##

使用log4j WARM

	log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
	log4j:WARN Please initialize the log4j system properly.
	log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

这是因为我们创建的log4j.properties资源文件没有添加到classpath中。 在intell

添加资源文件

这样添加以后我们的项目就可以打印日志了

配置文件查询一列数据

  • 在user.xml中创建sql的映射

     	<!--根据name模糊查询 可返回多条数据
     	 resultType:返回的是单条数据
    		${} 表示拼接的sql将接收到的数据不加任何修饰的加入到sql中
    		${} 使用这个拼接sql,完全可以引起sql注入问题 不建议使用
     	 ${value}接收输入的参数是普通类型,${}中只能用value来接收
     	 -->
     	 <select id="findUserByname" parameterType="java.lang.String" resultType="com.ljl.po.User">
    		SELECT * FROM  user WHERE username  LIKE '%${value}';
     	 </select>
    

创建测试方法

` InputStream inputStream=Resources.getResourceAsStream("config/mybatis-config.xml");
    SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
    SqlSession session = sessionFactory.openSession();
   List<User> result= session.selectList("test.findUserByname","%小明");
    System.out.println(result.size());`

用mybatis像数据库添加用户##

  • 创建sql的映射文件

       <!--添加一个用户
      parameterType指定输入参数的类型是pojo(包括用户信息)
      #{}中指定pojo的属性名,接收到pojo对象的属性值,mybatis通过ONGL获取对象的属性值
       -->
       <insert id="addUser" parameterType="com.ljl.po.User">
         INSERT  INTO  user (username,address) VALUE (#{username},#{address})
    
        </insert>
    
  • 测试方法

      //config/mybatis-config.xml
      InputStream inputStream=Resources.getResourceAsStream("config/mybatis-config.xml");
      SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
      SqlSession session = sessionFactory.openSession();
      User user=new User();
      user.setUsername("增加22");
      user.setBirthday(new java.sql.Date(20170128));
      user.setAddress("北京22");
      user.setSex("男222");
      session.insert("test.addUser",user);
      //这里需要注意 手动提交事务
      session.commit();
      session.close();
    

获取自增的主键的值

	 <!--添加一个用户
    parameterType指定输入参数的类型是pojo(包括用户信息)
    #{}中指定pojo的属性名,接收到pojo对象的属性值,mybatis通过ONGL获取对象的属性值
    SELECT 1290268 得到insert进去记录的主键值,(只适用于于自增主键)
    keyProperty:将查询到的主键值设置到parameterType指定的对象的那个属性值,这里就是id属性
    order:SELECT 1290268的执行顺序,相对于insert语句
    resultType:设置返回自增主键的类型,必须设置
 -->
<insert id="addUser" parameterType="com.ljl.po.User">
   <selectKey order="AFTER" keyProperty="id" resultType="java.lang.Integer">
       SELECT 1290268
   </selectKey>
    INSERT  INTO  user (username,address) VALUE (#{username},#{address})

</insert>

返回非自增的主键的值

	<!--
  使用MySQL.uuid生成主键
  执行过程:
    首先执行uuid()得到主键,将主键设置到user对象的id属性中
    其次在insert执行时,从user对象获取出id属性值
 -->
<insert id="addres1" parameterType="com.ljl.po.User">

    <selectKey order="BEFORE" keyProperty="id" resultType="java.lang.String">
        SELECT uuid()

    </selectKey>
    INSERT  INTO  user (id,username,address) VALUE (#{id},#{username},#{address})
</insert>

删除用户的映射文件

	 <delete id="deleteById" parameterType="java.lang.Integer">
      DELETE FROM  user WHERE id=#{id}
     </delete>

更发改用户映射文件

	  <!--
  根据id更新用户属性
-->
<update id="updatById" parameterType="com.ljl.po.User">
     UPDATE  user SET username=#{username},address=#{address} WHERE id=#{id}
</update>