logo资料库

张晓飞_Mybatis.pdf

第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
资料共27页,剩余部分请下载后查看
————————————————————————————— “玩转”Java 系列 Mybatis 1. Mybatis 介绍 MyBatis 是支持普通SQL 查询,存储过程和高级映射的优秀持久 层框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以 及对结果集的检索封装。MyBatis 可以使用简单的 XML 或注解用于 配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普 通的 Java 对象)映射成数据库中的记录. JDBC-dbutils-MyBatis-Hibernate 2. mybatis 快速入门 编写第一个基于 mybaits 的测试例子: 2.1. 添加 jar 包 【mybatis】 mybatis-3.1.1.jar 【MYSQL 驱动包】 1 【更多 Java – Android 资料下载,可访问尚硅谷(中国)官网 www.atguigu.com 下载区】
————————————————————————————— “玩转”Java 系列 mysql-connector-java-5.1.7-bin.jar 2.2. 建库+表 create database mybatis; use mybatis; CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT); INSERT INTO users(NAME, age) VALUES('Tom', 12); INSERT INTO users(NAME, age) VALUES('Jack', 11); 2.3. 添加 Mybatis 的配置文件 conf.xml 2.4. 定义表所对应的实体类 public class User { private int id; private String name; private int age; //get,set 方法 2 【更多 Java – Android 资料下载,可访问尚硅谷(中国)官网 www.atguigu.com 下载区】
————————————————————————————— } “玩转”Java 系列 2.5. 定义操作 users 表的 sql 映射文件 userMapper.xml "-//mybatis.org//DTD Mapper PUBLIC 3.0//EN" 2.6. 在 conf.xml 文件中注册 userMapper.xml 文件 2.7. 编写测试代码:执行定义的 select 语句 public class Test { public static void main(String[] args) throws IOException { String resource = "conf.xml"; //加载 mybatis 的配置文件(它也加载关联的映射文件) Reader reader = Resources.getResourceAsReader(resource); //构建 sqlSession 的工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); //创建能执行映射文件中 sql 的 sqlSession SqlSession session = sessionFactory.openSession(); //映射 sql 的标识字符串 String statement = "com.atguigu.mybatis.bean.userMapper"+".selectUser"; //执行查询返回一个唯一 user 对象的 sql User user = session.selectOne(statement, 1); System.out.println(user); } 3 【更多 Java – Android 资料下载,可访问尚硅谷(中国)官网 www.atguigu.com 下载区】
————————————————————————————— } “玩转”Java 系列 3. 操作 users 表的 CRUD 3.1. XML 的实现 1). 定义 sql 映射 xml 文件: insert into users(name, age) values(#{name}, #{age}); delete from users where id=#{id} update users set name=#{name},age=#{age} where id=#{id} 2). 在 config.xml 中注册这个映射文件 4 【更多 Java – Android 资料下载,可访问尚硅谷(中国)官网 www.atguigu.com 下载区】
————————————————————————————— 3). 在 dao 中调用: “玩转”Java 系列 public User getUserById(int id) { SqlSession session = sessionFactory.openSession(); User user = session.selectOne(URI+".selectUser", id); return user; } 3.2. 注解的实现 1). 定义 sql 映射的接口 public interface UserMapper { @Insert("insert into users(name, age) values(#{name}, #{age})") public int insertUser(User user); @Delete("delete from users where id=#{id}") public int deleteUserById(int id); @Update("update users set name=#{name},age=#{age} where id=#{id}") public int updateUser(User user); @Select("select * from users where id=#{id}") public User getUserById(int id); @Select("select * from users") public List getAllUser(); } 2). 在 config 中注册这个映射接口 5 【更多 Java – Android 资料下载,可访问尚硅谷(中国)官网 www.atguigu.com 下载区】
————————————————————————————— 3). 在 dao 类中调用 “玩转”Java 系列 public User getUserById(int id) { SqlSession session = sessionFactory.openSession(); UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.getUserById(id); return user; } 4. 几个可以优化的地方 4.1. 连接数据库的配置单独放在一个 properties 文件中 ## db.properties 4.2. 为实体类定义别名,简化 sql 映射 xml 文件中的引用 4.3. 可以在 src 下加入 log4j 的配置文件,打印日志信息 1. 添加 jar: log4j-1.2.16.jar 2.1. log4j.properties(方式一) 6 【更多 Java – Android 资料下载,可访问尚硅谷(中国)官网 www.atguigu.com 下载区】
————————————————————————————— “玩转”Java 系列 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 2.2. log4j.xml(方式二) 7 【更多 Java – Android 资料下载,可访问尚硅谷(中国)官网 www.atguigu.com 下载区】
“玩转”Java 系列 ————————————————————————————— 5. 解决字段名与实体类属性名不相同的冲突 5.1. 准备表和数据: CREATE TABLE orders( order_id INT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(20), order_price FLOAT ); INSERT INTO orders(order_no, order_price) VALUES('aaaa', 23); INSERT INTO orders(order_no, order_price) VALUES('bbbb', 33); INSERT INTO orders(order_no, order_price) VALUES('cccc', 22); 5.2. 定义实体类: public class Order { private int id; private String orderNo; private float price; } 5.3. 实现 getOrderById(id)的查询: 方式一: 通过在 sql 语句中定义别名 方式二: 通过 8 【更多 Java – Android 资料下载,可访问尚硅谷(中国)官网 www.atguigu.com 下载区】
分享到:
收藏