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>