博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis_HelloWorld
阅读量:6575 次
发布时间:2019-06-24

本文共 4621 字,大约阅读时间需要 15 分钟。

【梗概】

1.根据XML配置文件(全局配置文件,有数据源的一些运行信息)创建一个SqlSessionFactory对象。

2.sql映射文件:配置了每一个sql以及sql的封装规则。

3.将sql映射文件注册在全局配置文件中。

4写代码:

(1)根据全局配置文件得到SqlSessionFactory。

(2)使用SqlSession工厂,得到sqlSession对象,使用它进行增删改查。一个sqlSession就是代表和数据库的一次会话,用完关闭。

(3)使用sql的唯一标识来告诉Mybatis执行执行哪个sql。sql都保存在sql映射文件中。

 

【编写第一个基于Mybatis的程序】

(1)添加jar包

Mybatis:mybatis-3.1.1.jar

MySQL驱动包:mysql-connector-java-5.1.7-bin.jar

 

(2)建库+表

1 create database mybatis;2 use mybatis;3 CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);4 INSERT INTO users(NAME, age) VALUES('Tom', 12);5 INSERT INTO users(NAME, age) VALUES('Jack', 11);

 

(3) 添加 Mybatis  的配置文件 conf.xml

1 
2 4
5
6
7
8
9
10
11
12
13
14
15
16

 

(4) 定义表所对应的实体类

1 public class User {2     private int id;3     private String name;4     private int age;5     //get,set 方法6 }

 

(5)定义操作 users  表的 sql  映射文件 userMapper.xml

1 
2 4
5
9

 

(6)在 在 conf.xml  文件中注册 userMapper.xml 

1 
2
3

 

(7)编写测试代码:执行定义的 select  语句

1 public class Test { 2 public static void main(String[] args) throws IOException { 3      String resource = "conf.xml"; 4  5      //加载 mybatis 的配置文件(它也加载关联的映射文件) 6      Reader reader = Resources.getResourceAsReader(resource); 7  8     //构建 sqlSession 的工厂 9     SqlSessionFactory sessionFactory = new 10     SqlSessionFactoryBuilder().build(reader);11 12     //创建能执行映射文件中 sql 的 sqlSession13     SqlSession session = sessionFactory.openSession();14 15     //映射 sql 的标识字符串16     String statement = "com.atguigu.mybatis.bean.userMapper"+".selectUser";17 18      //执行查询返回一个唯一 user 对象的 sql19      User user = session.selectOne(statement, 1);20      System.out.println(user);         }21  }

 

【操作 users  表的 CRUD】

1).  定义 sql  映射 xml  文件

1 
2 insert into users(name, age) values(#{name}, #{age}); 3
4
5 delete from users where id=#{id} 6
7
8 update users set name=#{name},age=#{age} where id=#{id} 9
10 13

 

2). 在 在 config.xml  中注册这个映射文件

1 

 

3). 在 在 dao  中调用:

1 public User getUserById(int id) {2     SqlSession session = sessionFactory.openSession();3     User user = session.selectOne(URI+".selectUser", id);4     return user;5 }

 

【注解的实现】

1).  定义 sql  映射的接口

1 public interface UserMapper { 2 @Insert("insert into users(name, age) values(#{name}, #{age})") 3 public int insertUser(User user); 4 @Delete("delete from users where id=#{id}") 5 public int deleteUserById(int id); 6 @Update("update users set name=#{name},age=#{age} where id=#{id}") 7 public int updateUser(User user); 8 @Select("select * from users where id=#{id}") 9 public User getUserById(int id);10 @Select("select * from users")11 public List
getAllUser();12 }

 

2). 在 在 config  中注册这个映射接口

1 

 

3). 在 在 dao  类中调用

1 public User getUserById(int id) {2     SqlSession session = sessionFactory.openSession();3     UserMapper mapper = session.getMapper(UserMapper.class);4     User user = mapper.getUserById(id);5     return user;6 }

 

【几个可以优化的地方】

(1)连接数据库的配置单独放在一个 properties  文件中

## db.properties

 

(2)为实体类定义别名, 简化 sql  映射 xml  文件中的引用

1 
2
3

 

(3)可以在 src  下加入 log4j  的配置文件, 打印日志信息

1. 添加 jar:

log4j-1.2.16.jar

2. log4j.properties(

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

 

3.log4j.xml( 方式二)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
</layout>
</appender>
<logger name="java.sql">
<level value="debug" />
</logger>
<logger name="org.apache.ibatis">
<level value="debug" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>

 

转载于:https://www.cnblogs.com/zhzcode/p/9781747.html

你可能感兴趣的文章
mysql atlas 实现读写分离分担数据库压力
查看>>
掘金翻译计划 GitHub Star 破3千--终于等到你
查看>>
自定义圆环图表
查看>>
爬虫数据库一些简单的设计逻辑
查看>>
react native 处理iOS和安卓系统文字
查看>>
[北京昌平] 企名片寻找合适的伙伴,一起做数据,让数据不再难找难应用,做全球企业数据服务商...
查看>>
设计师学习HTML/CSS之路-08
查看>>
【分享】终端命令工具 自动生成vue组件文件以及修改router.js
查看>>
简单的移动端图片裁剪vue插件[旋转,平移,缩放,印花]
查看>>
时间管理的目标,永远不是「节省时间」,而是「找到自己」。
查看>>
分布式一致性算法-paxos详解与分析
查看>>
代理模式
查看>>
我们能用RNN写策略吗?
查看>>
SpringBoot高级篇JdbcTemplate之数据查询上篇
查看>>
Android 爱心万花筒简单实现
查看>>
常用正则表达式
查看>>
Mapbox词汇表中文文档(查找Mapbox相关的术语及其定义)
查看>>
js-状态模式
查看>>
Java中的枚举类
查看>>
一个工具类实现自定义Tablayout的下划线宽度
查看>>