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, ...
随机推荐
- shopxx--权限功能测试
shiro权限控制 一.添加角色 1.打开 系统→角色管理,点击 添加 赋予当前角色对应的权限 二.添加管理员(即用户管理) 添加用户,赋予刚才添加的角色 三.用新用户登录,进行测试 登录结果
- SSM框架下结合 log4j、slf4j打印日志
首先加入log4j和slf4j的jar包 <!-- 日志处理 <!-- slf4j日志包--> <dependency> <groupId>org.slf4j ...
- powerdesigner 不能自动生成注释的解决方法
解决power designer 不能自动生成注释的解决办法只需要3步: 一.快捷键 Alt+Shift+X 打开脚本编辑器: 二.将下面天蓝色的字体脚本添加到脚本编辑器里面: Option Expl ...
- Zabbix 3.0 部署监控 [二]
一.添加监控主机及设置 1.创建主机 Agent可以干一些SNMP无法干的事情,例如自定义监控项 snmp相关文章:http://www.abcdocker.com/abcdocker/1376 ...
- 虚拟机安装 deepin Linux 注意事项
主要要注意下面几点: 一.虚拟机"客户机操作系统"类型 选择"Windows 7 x64" 选择"客户机操作系统"类型,这个选择十分重要,D ...
- leecode -- 3sum Closet
Given an array S of n integers, find three integers in S such that the sum is closest to a given num ...
- 关路灯,洛谷dp
题目传送门https://www.luogu.org/problem/show?pid=1220 我们假设 dpij0 为目前最优值是在 i 位置,dpij1 为目前最优值是在 j 位置则 i 到 j ...
- Spring Cloud Feign 整合 Hystrix
在前面随笔Spring Cloud 之 Feign的feign工程基础上进行改造 1.pom.xml依赖不变 2.application.yml文件添加feign.hystrix.enabled=tr ...
- 地图开发GIS的应用有哪些?
GIS的应用领域有哪些? 地理信息系统在最近的30多年内取得了惊人的发展,广泛应用于资源调查.环境评估.灾害预测.国土管理.城市规划.邮电通讯.交通运输.军事公安.水利电力.公共设施管理.农林牧业.统 ...
- Git快速入门和常用命令
一.快速入门 本地初始化一个项目 首先,你需要执行下面两条命令,作为 git 的基础配置,作用是告诉 git 你是谁,你输入的信息将出现在你创建的提交中. git config --global us ...