MyBatis学习入门_01
来源:互联网 发布:mac最近删除的照片 编辑:程序博客网 时间:2024/05/18 01:19
1. 概述
关于 MyBatis 的第一篇文章,主要记录一下MyBatis 的整体执行过程以及写一个入门程序。
2. MyBatis 的整体执行过程
参考这篇文章:http://blog.csdn.net/eson_15/article/details/51582967
这里做个小结:配置mybatis的全局配置文件SqlMapConfig.xml(名称不固定的,里面配置数据源,事务,mapper.xml文件等),通过 SqlMapConfig.xml 配置文件创建SqlSessionFactory(会话工厂), 然后通过会话工厂创建 sqlSession,之后就可以对数据库进行增删改查。
3. MyBatis 的环境配置
3.1 jar 包
mybatis 的 jar 包可以在 github 上下载,地址:github mybatis
- mybatis 的核心包:mybatis-3.3.0.jar
- mybatis 的lib文件夹下的依赖包
- 数据库驱动包:mysql-connector-java-5.0.8-bin.jar
共 11 个 jar 包。
3.2 log4j.properties 日志配置文件
# Global logging configuration# developer-->DEBUG productor-->INFO or ERRORlog4j.rootLogger=DEBUG, stdout# MyBatis logging configuration...log4j.logger.org.mybatis.example.BlogMapper=TRACE# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
4. MyBatis 的 helloworld 程序
下载好相应 jar 包后,就可以写我们的 helloworld 程序了。
步骤:创建一个 java 工程MyBatis_first –> 导入相应 jar 包 –> 创建 config 源文件夹 在里面配置 log4j.properties 和 SqlMapConfig.xml
4.1 log4j.properties
如上
4.2 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> <!-- 和Spring整合后environment配置都会被干掉 --> <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/mybatis" /> <property name="username" value="root" /> <property name="password" value="1018" /> </dataSource> </environment> </environments> <!-- <mapper>标签用来配置映射文件的,这些映射文件是针对不同的pojo的 --> <mappers> <mapper resource="sqlmap/User.xml" /> </mappers></configuration>
注意这里要改成自己的数据库账号密码。
4.3 写一个 pojo 类—User.java,映射数据库中的对应表—user 。其中表的字段和类的成员变量要一一对应。
User.java
package mybatis.po;import java.util.Date;public class User { //属性名和数据库表的字段对应 private int id; private String username;// 用户姓名 private Date birthday;// 生日 private String sex;// 性别 private String address;// 地址 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address=" + address + "]"; } public User(int id,String userName,Date birthday,String sex, String address) { this.id = id; this.username = userName; this.sex = sex; this.birthday = birthday; this.address = address; } public User(){}}
4.4 之后配置 mapper.xml文件,在User.xml 中配置我们的 sql 语句,注意 mapper.xml 文件需要在 SqlMapConfig.xml 文件中配置。
User.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="test"> <!-- 需求:通过id查询用户 --> <select id="findUserById" parameterType="int" resultType="mybatis.po.User"> select * from user where id = #{id} </select></mapper>
详细介绍请参考:http://blog.csdn.net/eson_15/article/details/51592608
4.5 接下来写一个测试类测试一下能不能查询到数据库中的数据
MybatisTest.java
package mybatis.first;import java.io.IOException;import java.io.InputStream;import mybatis.po.User;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Test;public class MybatisTest { //因为接下来的测试代码中,获取sqlSession这部分都相同,所以抽取成一个方法 public SqlSession getSession() throws IOException { String resource = "SqlMapConfig.xml"; //mybatis配置文件 //得到配置文件的流 InputStream inputStream = Resources.getResourceAsStream(resource); //创建会话工厂SqlSessionFactory,要传入mybaits的配置文件的流 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //通过工厂得到SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); return sqlSession; } //根据id查询用户的信息,得到一条记录的结果 @Test public void findUserById() throws IOException { SqlSession sqlSession = getSession(); //调用上面的方法获取sqlSession //通过SqlSession操作数据库 //第一个参数:映射文件中statement的id,= namespace + statement的id //第二个参数:指定和映射文件中所匹配的parameterType类型的参数 //selectOne表示查询出一条记录进行映射 User user = sqlSession.selectOne("test.findUserById", 2); System.out.println(user); //释放资源,最好放在finally中,这里只是测试程序,就不弄了 sqlSession.close(); }}
简单解释一下:getSession() 获取到 SqlSession 然后通过 sqlSession 来操作数据库,之后关闭sqlSession。这样就完成了查找一条记录的操作。增删改查的操作都很类似的。
4.6 根据用户名称模糊查询用户信息
我们只需要在User.xml 文件中配置相应的 sql 语句,然后在测试类中测试就可以了的。
User.xml
<mapper namespace="test"> <!-- 省略其他 --> <!-- 根据用户名称模糊查询用户信息,可能返回多条 --> <select id="findUserByName" parameterType="java.lang.String" resultType="mybatis.po.User"> select * from user where username like '%${value}%' </select></mapper>
MybatisTest.java
//根据用户名称模糊查询用户信息 @Test public void findUserByName() throws IOException { SqlSession sqlSession = getSession(); List<User> users = sqlSession.selectList("test.findUserByName", "小明"); System.out.println(users); sqlSession.close(); }
4.7 添加用户
添加用户的操作也是在 User.xml文件中写添加的 sql 语句,之后我们在测试的类里面测试一下。
User.xml
<mapper namespace="test"> <!-- 省略不相关配置 --> <!-- 添加用户 --> <insert id="insertUser" parameterType="mybatis.po.User"> insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address}) <!-- 将插入数据的主键返回,返回到user对象中 --> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> select last_insert_id() </selectKey> <!-- <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String"> select uuid() </selectKey> --> </insert></mapper>
测试的java类
//添加用户信息 @Test public void insertUser() throws IOException { SqlSession sqlSession = getSession(); User user = new User("倪升武", new Date(), "男", "同济大学"); sqlSession.insert("test.insertUser", user); //添加一项 //提交事务 sqlSession.commit(); System.out.println(user.getId()); //获取刚刚添加的id //释放资源,最好放在finally中,这里只是测试程序,就不弄了 sqlSession.close(); }
4.8 更新用户和删除用户
比较简单,就直接写了
User.xml 配置文件
<mapper namespace="test"> <!-- 省略不相关配置 --> <!-- 删除用户 --> <delete id="deleteUser" parameterType="java.lang.Integer"> delete from user where id=#{id} </delete> <!-- 更新用户 --> <update id="updateUser" parameterType="mybatis.po.User"> update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id} </update></mapper>
测试类代码
//删除用户信息 @Test public void deleteUser() throws IOException { SqlSession sqlSession = getSession(); //传入id,删除用户 sqlSession.delete("test.deleteUser", 16); //提交事务 sqlSession.commit(); //释放资源,最好放在finally中,这里只是测试程序,就不弄了 sqlSession.close(); } //更新用户信息 @Test public void updateUser() throws IOException { SqlSession sqlSession = getSession(); User user = new User("倪升武", new Date(), "男", "同济大学"); user.setId(9); //更新用户 sqlSession.update("test.updateUser", user); //提交事务 sqlSession.commit(); //释放资源,最好放在finally中,这里只是测试程序,就不弄了 sqlSession.close(); }
总结:这样我们就利用 MyBatis 实现了最基本的增删改查操作,这里重点是把握 MyBatis 的整体流程,后面一篇文章会总结一下 Mybatis 的 两种开发方法:原始 dao 开发方法和 mapper 代理的开发方法。期待…..
- MyBatis学习入门_01
- 学习MyBatis从零开始_01(基础环境搭建以及基本使用)
- MyBatis基础_01
- Matlab入门_01
- Spring入门_01
- WebService入门_01
- 【MyBatis学习02】MyBatis入门
- Mybatis上路_01-基本流程
- MyBatis入门学习教程 MyBatis快速入门
- mybatis学习笔记---入门
- ibatis(mybatis) 学习入门
- MyBatis入门学习
- mybatis入门学习
- MyBatis入门学习
- mybatis入门学习
- mybatis 入门学习
- MyBatis入门学习
- MyBatis入门学习
- 分类categories动态添加方法和属性
- vivado HLS 设计实现sBrief描述子
- java中获取时间戳的方法
- flume1.7 TailDirSource断点续传与文件更名后数据重复采集的bug修复
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)新的异常解决方案
- MyBatis学习入门_01
- 快速排序
- 经验之道:最有效的 iOS 内存泄漏检测
- Spring Security教程(1)----SpringSecurity3.2环境搭建
- 支付宝二维码脱机认证库测试(linux_x86平台验证)
- C# 小工具:读取excel表格,实现筛选某一列的功能,并显示处理
- SpringBoot 入门
- MySQL 主从配置
- 使用宏实现两个数中求较大值