Mybatis 学习一
简介
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
用法
1.基于xml文件配置:
如果项目是依赖于maven,需要在pom.xml文件中增加mybatis依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
在maven目录结果main目录下增加java文件夹,并设置为主资源文件夹,如在Intellij中打开project Structure
在Modules模块中
如果不添加,则会创建无法创建java文件
在maven resources目录下是所有配置文件存放的目录,编译后它的路径就是classpath路径下也就是src路径下,在resource中配置数据库文件dbconf.xml(名字任意取),在dbconf.xml中添加:
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://192.168.88.6:3306/asterisk" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="user.xml"></mapper>
<mapper class="com.kalamodo.mybatis.DbInter.UserInter"></mapper>
</mappers>
</configuration>
在上述创建的java文件夹下新建java包:
com.mybatis.test
在此包下新建bean包:
beans
在beans目录下新建UserBean.java
package com.kalamodo.mybatis.beans;
/**
* Created by 95 on 2017/5/12.
*/
public class UserBean {
private int id;
private String header;
private String nickname;
private int sex;
private int role;
private String callid;
private String secret;
private String sip;
private int belongid;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getHeader() {
return header;
}
public void setHeader(String header) {
this.header = header;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public int getRole() {
return role;
}
public void setRole(int role) {
this.role = role;
}
public String getCallid() {
return callid;
}
public void setCallid(String callid) {
this.callid = callid;
}
public String getSecret() {
return secret;
}
public void setSecret(String secret) {
this.secret = secret;
}
public String getSip() {
return sip;
}
public void setSip(String sip) {
this.sip = sip;
}
public int getBelongid() {
return belongid;
}
public void setBelongid(int belongid) {
this.belongid = belongid;
}
}
在resource文件夹下添加执行sql语句的xml文件user.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="k_websmanager">
<select id="all" resultType="com.kalamodo.mybatis.beans.UserBean">
select * from k_websmanager
</select>
</mapper>
namespace 很重要的命名空间,用于在java代码中标识要执行的是哪一个mapper,resultType 标识返回类型,查询后,会自动封装成返回的类型
接下来就是在dbconf.xml中创建执行sql的映射
在dbconf.xml中添加注册执行sql语句
<mappers>
<mapper resource="user.xml"></mapper>
</mappers>
测试:
public class DbTest {
public static void main(String args[]){
try {
String resource= "dbconfig.xml";
InputStream in=Resources.getResourceAsStream(resource);
SqlSessionFactory sqlFc=new SqlSessionFactoryBuilder().build(in);
SqlSession sqlse=sqlFc.openSession();
List<UserBean> UserBeans=sqlse.selectList("k_websmanager.all");
for (UserBean user : UserBeans){
System.out.print(user.getNickname());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
2.基于代码注解
创建接口UserInter
/**
* Created by 95 on 2017/5/15.
*/
public interface UserInter {
@Select("select * from k_websmanager")
public List<UserBean> selectuser();
}
在dbconf.xml中添加mapper
注册执行sql语句
测试:
public static void main(String args[]){
try {
String resource= "dbconfig.xml";
InputStream in=Resources.getResourceAsStream(resource);
SqlSessionFactory sqlFc=new SqlSessionFactoryBuilder().build(in);
SqlSession sqlse=sqlFc.openSession();
UserInter usermapper=sqlse.getMapper(UserInter.class);
List<UserBean> UserBeans=usermapper.selectuser();
for (UserBean user : UserBeans){
System.out.print(user.getNickname());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
优化:
1.将dbconf.xml中数据库配置属性的接口提取出来,创建db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.88.6:3306/asterisk
username=root
password=root
在dbconf.xml中包含该配置属性:
更改配置:
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>