(二)mybatis学习之入门增删改查
来源:互联网 发布:asyncio python详解 编辑:程序博客网 时间:2024/05/20 20:46
准备工作
首先从github里【https://github.com/mybatis/mybatis-3】里下载mybatis,里面有个pdf说明文档,文档详细介绍了mybatis所涉及到的所有内容。开发的过程中,我们需要参考这个文档。
在eclipse里新创建一个maven项目,并添加响应的依赖包
(1)servlet的依赖包
(2)mybatis的依赖包
(3)mysql数据库依赖包
(4)log4j日志依赖包(slf4j和log4j)
(5)junit单元测试依赖包
pom.xml配置文件内容如下:
<dependencies> <!-- 添加servlet的依赖包 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency> <!-- 添加mybatis的依赖包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.3.1</version></dependency><!-- 加入mysql数据库依赖包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency><!-- 添加log4j依赖包(slf4j和log4j) --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.20</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency> <!-- junit单元测试包 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies>
添加日志配置文件log4j.properties,内容如下:
log4j.rootLogger=DEBUG,Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n log4j.logger.java.sql.ResultSet=INFO log4j.logger.org.apache=INFO log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG
mybatis入门增删改查
对于mybatis开发内容来说,其实就是一个全局配置文件和N个mapper.xml映射文件以及sql查询结果所需要映射的的pojo实体类。
接下来以用户信息的增删改查功能来进行配置开发。
全局配置文件sqlMapConfig.xml
创建一个mybatis的全局配置文件sqlMapConfig.xml【内容可从mybatis的pdf说明文档里copy过来】
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><!-- environments指的是mybatis运行环境,目前单独使用mybatis做测试时,需要在该环境中配置数据源。当mybatis与spring整合后,这一块内容则被废弃了。因为数据源等环境都交由了spring来管理 --><environments default="development"><environment id="development"><!-- 使用jdbc事务管理,事务控制由mybatis管理 --><transactionManager type="JDBC"/><!-- 数据库连接池,由mybatis管理 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatisdb?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull"/><property name="username" value="root"/><property name="password" value="888"/></dataSource></environment></environments></configuration>
根据id查询用户信息
映射文件(user.xml)
需要在映射文件中配置sql语句
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace命名空间,作用是对sql语句进行分类管理附加说明:如果以后用到mapper代理开发,则这里的namespace内容必须与代理类的全路径一致如果其他配置文件(namespace=yyy)也有一个id值叫findUserById,那么这个时候,就要使用命名空间来区别java外部要使用某个findUserById查询时,就要用xxx.findUserById 或 yyy.findUserById 来获取对应的sql配置 --><mapper namespace="xxxx"><!-- 通过select来执行数据库的查询id:用于标识映射文件中的sql语句#{}:表示占位符#{id}:其中的id表示接收输入的参数,如果输入参数是简单类型,#{}中的参数名称可以任意parameterType:指定输入参数类型,目前这里是字符串类型parameterMap:早期版本,目前已废弃不用resultType:指定sql查询输出结果所映射的java对象类型,这里是返回一个user对象 --><select id="findUserById" parameterType="java.lang.String" resultType="pojo.User">select * from tab_user where id=#{id}</select></mapper>
pojo类(User.java)
public class User {private String id;private String userName;//用户名private String nickName;//昵称private String password;//登录密码private Integer sex;//性别private Date birthday;//出生日期private String province;//省private String city;//市private String county;//县private Date createTime;//创建时间/** get、set 方法*/
在sqlMapConfig.xml中配置加载user.xml文件
<!-- 加载映射文件 --><mappers><mapper resource="sqlMap/user.xml"/></mappers>
项目结构
测试
根据昵称模糊查询用户信息
配置文件
使用user.xml配置文件,在配置文件里添加如下配置代码:
<!-- 根据昵称模糊查询用户信息 resultType:指定的是单条记录所映射的java对象类型,虽然这里查询出来的结果集是list 但是仍然设置resultType为对象类型如果这里使用#{value}占位符来接收输入参数,那么java代码里就得程序员自己加上%传进来, 如:List<User> userList = sqlSession.selectList("xxxx.findUserByName", "%卡%"); 平时一般都不会使用这种方式来进行传值,我们应该把%放到配置文件中,此时需要用到${}${}:表示拼接sql串,将接收到的参数内容不加任何修饰拼接到sql语句中使用${}拼接sql,可能会引起sql注入。${value}:接收传入参数的内容,如果传入参数是简单类型,${}里面只能为value--><select id="findUserByName" parameterType="java.lang.String" resultType="pojo.User"> select * from tab_user where nickName like '%${value}%'</select>
代码测试
添加用户信息
配置文件
在user.xml中添加新增用户的sql配置
自增主键的返回
<!-- 新增用户 parameterType:指定输入参数类型是pojo#{}中指定pojo的属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象的属性值实际情况中,插入新记录后可能需要用到主键id,此时需要使用到selectKey来配置主键返回(1)自增主键返回:mysql自增主键,是执行insert提交之前主动生成一个自增主键,可以通过mysql函数获取到刚刚插入的主键id--><insert id="addUser" parameterType="pojo.User"><!-- 将插入数据的主键返回,返回到user对象中 select LAST_INSERT_ID();获取到insert进去的记录主键值,只适用于自增主键keyProperty:将查询到的主键值设置到parameterType指定的对象的某个属性order:select LAST_INSERT_ID()的执行顺序,BEFORE表示在insert语句之前执行,AFTER则反之--><selectKey keyProperty="id" order="AFTER" resultType="int">select LAST_INSERT_ID()</selectKey>insert into tab_user (userName,nickName,`password`,sex)values (#{userName},#{nickName},#{password},#{sex})</insert>
非自增主键返回
<!-- 新增用户 parameterType:指定输入参数类型是pojo#{}中指定pojo的属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象的属性值实际情况中,插入新记录后可能需要用到主键id,此时需要使用到selectKey来配置主键返回(1)自增主键返回:mysql自增主键,是执行insert提交之前主动生成一个自增主键,可以通过mysql函数获取到刚刚插入的主键id--><insert id="addUser" parameterType="pojo.User"><!-- 将插入数据的主键返回,返回到user对象中 使用mysql的UUID()方法获取主键值keyProperty:将查询到的主键值设置到parameterType指定的对象的某个属性order:select UUID()的执行顺序,BEFORE表示在insert语句之前执行,AFTER则反之--><selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String"><!-- 这里可以根据项目需求设置主键的生成规则 -->select UUID()</selectKey>insert into tab_user (id,userName,nickName,`password`,sex)values (#{id},#{userName},#{nickName},#{password},#{sex})</insert>
代码测试
当前数据库表的id是uuid生成的,故这里只对非自增主键的例子进行测试
更新用户信息和删除用户信息
配置文件
<!-- 更新用户信息 --><update id="updateUser" parameterType="pojo.User" >update tab_user set userName=#{userName},`password`=#{password} where id=#{id}</update><!-- 根据id删除用户信息 --><delete id="deleteUserById" parameterType="java.lang.Integer">delete tab_user where id=#{id}</delete>
代码测试
更新用户代码测试
根据id删除用户代码测试
0 0
- (二)mybatis学习之入门增删改查
- Mybatis入门学之增删改查(二)
- Mybatis入门学习篇(二)之基于注解的增删改查
- mybatis学习入门使用注解增删改查(二)
- Mybatis学习系列之(二)---crud(即增删改查)
- mybatis学习入门增删改查(一)
- Mybatis入门之增删改查(CRUD)
- mybatis学习笔记(二)增删改查
- MyBatis学习(二)-增删改查基于XML
- 浅谈MyBatis 之 增删改查(CRUD) (二)
- MyBatis框架学习之增删改查
- Mybatis入门(三):增删改查
- mybatis入门(三)增删改查
- Mybatis入门--增删改查
- MyBatis(二)增删改查
- mybatis学习(三)--增删改查
- (2)MyBatis之增删改查
- mybatis之增删改查
- shape的使用(全圆角、部分圆角)
- iOS 企业级开发证书发布权限问题
- XAudio2学习之组合音频方法作为操作集
- 电感的主要参数
- solr学习笔记
- (二)mybatis学习之入门增删改查
- Tuxedo介绍
- lubuntu桌面配置需求及实现(2)
- 二叉树中权值最大的叶节点到权值最小的叶节点的距离
- 关于Android开发的40条优化建议
- 获取系统时间,计算时间差,各种时间格式之间转换
- 内部类
- 自己的密码该如何设计才能预防被撞库呢?这里给个参考。
- latex的数学公式方法