Mybatis-----优化配置文件,基于注解CR
这篇主要写配置文件的优化,例如 jdbc.properties 配置文件 ,引入数据库的文件,例如driver,url,username,password 等,然后在 SqlMapConfig.xml 里面引入相对应的文件即可,可以简化配置文件, 在 SqlMapConfig.xml 用 <typeAliases> <typeAlias type="bean.Userinfo" alias="User"/> </typeAliases> 为包起别名 。然后封装 SqlSessionFactory 文件,因为这样写可以简化在测试类中每次都加载配置文件的操作。还有就是基于注解的方式 ,在接口 中写对应的增删改查的方法,然后@select ,@insert @delete @update 写对应的SQL,最后在SqlMapConfig.xml 里面添加<mappers> <mapper class="Mapper.UserinfoMapper"/> </mappers> 基本上就可以大功告成了, 最后可能出现的问题是在bean里面重写toString 方法,否则在控制台会把内存地址输出出来。
package TEST; import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import bean.Userinfo; import Mapper.UserinfoMapper;
import Tools.Util; public class Demo { //根据ID查询用户
@Test
public void findbyuserinfoID() throws Throwable{
System.out.println("基于注解的方式查询ID");
// TODO Auto-generated method stub
SqlSession sqlSession = Util.getSqlSession(); //得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
UserinfoMapper mapper = sqlSession.getMapper(UserinfoMapper.class);
//执行查询操作,将查询结果自动封装成User返回
Userinfo userinfo = mapper.getById(5);
//使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(userinfo);
} @Test
public void addUser() throws Throwable{
System.out.println("基于注解的方式查询ID");
// TODO Auto-generated method stub
SqlSession sqlSession = Util.getSqlSession(true); //得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
UserinfoMapper mapper = sqlSession.getMapper(UserinfoMapper.class);
//执行查询操作,将查询结果自动封装成User返回
Userinfo userinfo = new Userinfo();
userinfo.setUname("楚云飞");
userinfo.setUpass("123");
userinfo.setId(3);
int adduser = mapper.addUser(userinfo);
//使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(adduser);
} }
package bean;
public class Userinfo {
private String uname;
private String upass;
public int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpass() {
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" +uname + ", upass=" + upass + "]";
}
}
package Mapper; import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select; import bean.Userinfo; public interface UserinfoMapper {
@Select("select * from Userinfo where id=#{id}")
public Userinfo getById(int id);
@Insert("insert into userinfo(uname,upass,id) values(#{uname},#{upass},#{id})")
public int addUser(Userinfo userinfo);
}
package Tools; import java.io.InputStream; import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class Util { /**
* 获取SqlSessionFactory
* @return SqlSessionFactory
*/
public static SqlSessionFactory getSqlSessionFactory() {
String resource = "SqlMapConfig.xml";
InputStream is = Util.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
return factory;
} /**
* 获取SqlSession
* @return SqlSession
*/
public static SqlSession getSqlSession() {
return getSqlSessionFactory().openSession();
} /**
* 获取SqlSession
* @param isAutoCommit
* true 表示创建的SqlSession对象在执行完SQL之后会自动提交事务
* false 表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,这时就需要我们手动调用sqlSession.commit()提交事务
* @return SqlSession
*/
public static SqlSession getSqlSession(boolean isAutoCommit) {
return getSqlSessionFactory().openSession(isAutoCommit);
}
}
jdbc.properties 配置文件
jdbc.driver=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl jdbc.username=scott jdbc.password=tiger
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <properties resource="jdbc.properties"></properties>
<!-- 自定义别名(如果在配置文件的过程中发现别名报错,可能是位置顺序有问题) -->
<typeAliases>
<typeAlias type="bean.Userinfo" alias="User"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments> <!-- 读取Mapper包下的UserinfoMapper文件 -->
<mappers>
<mapper class="Mapper.UserinfoMapper"/>
</mappers>
</configuration>
最后,所有的文件都是经过测试的,可复制,可粘贴。接下来会写动态sql,以及关联查询等,敬请期待!
Mybatis-----优化配置文件,基于注解CR的更多相关文章
- 基于注解的springboot+mybatis的多数据源组件的实现
通常业务开发中,我们会使用到多个数据源,比如,部分数据存在mysql实例中,部分数据是在oracle数据库中,那这时候,项目基于springboot和mybatis,其实只需要配置两个数据源即可,只需 ...
- Mybatis框架基于注解的方式,实对数据现增删改查
编写Mybatis代码,与spring不一样,不需要导入插件,只需导入架包即可: 在lib下 导入mybatis架包:mybatis-3.1.1.jarmysql驱动架包:mysql-connecto ...
- mybatis 详解(三)------入门实例(基于注解)
1.创建MySQL数据库:mybatisDemo和表:user 详情参考:mybatis 详解(二)------入门实例(基于XML) 一致 2.建立一个Java工程,并导入相应的jar包,具体目录如 ...
- SpringMvc+Spring+MyBatis 基于注解整合
最近在给学生们讲Spring+Mybatis整合,根据有的学生反映还是基于注解实现整合便于理解,毕竟在先前的工作中团队里还没有人完全舍弃配置文件进行项目开发,由于这两个原因,我索性参考spring官方 ...
- Mybatis(二)基于注解的入门实例
前言 上一篇简单的介绍了Mybatis的概念和基于XML来实现数据库的CRUD,这篇给大家实现基于注解的CRUD. 一.初始搭建 在基于注解当中前四步和上一篇基于XML是一样的,分别是: 1)创建数据 ...
- mybatis基于注解形式的多数据源
最近在做一个系统管理项目,需要使用到多数据源,尝试了注解形式和xml形式的多数据源配置,以下是基于注解形式的Mybatis多数据源配置. 1.application.yml 配置文件 database ...
- 基于注解的Mybatis mapper 接口注意事项
基于注解的Mybatis mapper 接口功能没有mapper xml配置文件丰富,并且动态sql语句的灵活性不能和xml配置相比. 这里仅仅说一下基于注解的动态sql注意事项: Mybatis提供 ...
- MyBatis -- 对表进行增删改查(基于注解的实现)
1.MyBatis对数据库表进行增/删/改/查 前一篇使用基于XML的方式实现对数据库的增/删/改/查 以下我们来看怎么使用注解的方式实现对数据库表的增/删/改/查 1.1 首先须要定义映射sql的 ...
- Mybatis基于注解开启使用二级缓存
关于Mybatis的一级缓存和二级缓存的概念以及理解可以参照前面文章的介绍.前文连接:https://www.cnblogs.com/hopeofthevillage/p/11427438.html, ...
随机推荐
- Linux系列教程(二十四)——Linux的系统管理
上篇博客介绍了Linux的服务管理,不管是以RPM包安装的服务,还是通过源码包安装的服务,万能启动服务的方法都可以通过 /绝对路径/启动脚本名 start .而通过 RPM 包安装的服务还可以通过 s ...
- 为什么我的子线程更新了 UI 没报错?借此,纠正一些Android 程序员的一个知识误区
开门见山: 这个误区是:子线程不能更新 UI ,其应该分类讨论,而不是绝对的. 半小时前,我的 XRecyclerView 群里面,一位群友私聊我,问题是: 为什么我的子线程更新了 UI 没报错? 我 ...
- Bone Collector-HDU
Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like ...
- Android 软键盘的显示和隐藏,这样操作就对了
一.前言 如果有需要用到输入的地方,通常会有需要自动弹出或者收起软键盘的需求.开篇明义,本文会讲讲弹出和收起软键盘的一些细节,最终还会从源码进行分析. 想要操作软键盘,需要使用到 InputMetho ...
- django事务处理
#导包 from django.db import transaction try: #django默认是自动提交到数据库,此处设置不让其自动提交 transaction.set_autocommit ...
- mysql 有哪些索引
Mysql支持哪几种索引 从数据结构角度 1.B+树索引(O(log(n))):关于B+树索引,可以参考 MySQL索引背后的数据结构及算法原理 2.hash索引:a 仅仅能满足"=&quo ...
- PHP 常用字符串函数
1.查找字符位置函数 strpos($str,search,[int]):查找search在$str中的第一次位置从int开始: stripos($str,search,[int]):函数返回字符串在 ...
- js 数组去重复的方法
数组去重复是js中常用的方法,归纳了四种如下: 1. for + indexOf 去重复 var arr = [3,5,5,4,1,1,2,3,7,2,5]; var target = []; fo ...
- SpringMvc+JavaConfig+Idea 搭建项目
1.介绍 之前搭建SpringMvc项目要配置一系列的配置文件,比如web.xml,applicationContext.xml,dispatcher.xml.Spring 3.X之后推出了基于Jav ...
- 开源:Sagit.Framework For IOS 开发框架
一:创造Sagit开发框架的起因: 记得IT连创业刚进行时,招了个IOS的女生做开发,然后: ----------女生的事故就此开始了----------- 1:面试时候:有作品,态度也不错,感觉应该 ...