Mybatis
MyBatis的第一次课!
mybatis感觉很nice!操作简便!
http://www.mybatis.org/mybatis-3/zh/getting-started.html
MyBatis,原名ibatis,比hibernate的运行速度快,接近jdbc。开发较为简便,企业一般用的都是mybatis!
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>MyBatisWork</groupId>
<artifactId>MyBatisWork</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>MyBatisWork Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.43</version>
</dependency>
</dependencies>
<build>
<finalName>MyBatisWork</finalName>
</build>
</project>
使用的是eclipse+maven进行开发!
上述是mybatis的依赖配置。
junit:4.12版,适合代码调试。
MyBatis:3.4.1,较为常用。
MySQL:5.1.43,匹配本机的MySQL。
在Java Resources的libraries里maven dependencies内,只有4个包。
注意:如果maven仓库出现未下载完的资源依赖,搜索框输入lastupdate,未下载完的资源即会出现,全部删除即可。
在Java Resources的src/main/resources,新建xml文件,格式为myBatis-config.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>
<typeAliases>
<package name="com.hc.entity"/>
</typeAliases>
<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://localhost:3306/cn?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/hc/entity/User.xml"/>
</mappers>
</configuration>
上述是myBatis-config.xml内的基本配置。
typeAliases:别名设置,可以有效进行拼接,一般是com/xx/entity。
dataSource:数据库设置。
driver:驱动包的类
url:数据库位置
mappers:实体类的映射文件,里面是各种操作需要的SQL。
在Java Resources的src/main/java,新建对象类。
对象类:/MyBatisWork/src/main/java/com/hc/entity/User.java
package com.hc.entity;
public class User {
private Integer userId;
private String userName;
public User() {
super();
}
public User(String userName) {
super();
this.userName = userName;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
上述的是对象的封装。
映射文件:/MyBatisWork/src/main/java/com/hc/entity/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="com.hc.dao.UserDao">
<select id="selAUserByNa" parameterType="java.lang.String" resultType="User">
select * from user where userName=#{userName}
</select>
<select id="selAUser" parameterType="int" resultType="User">
select * from user where userId=#{userId}
</select>
<select id="selAllUser" resultType="User">
select * from user
</select>
<insert id="insUser" parameterType="User">
insert into user(userName) values(#{userName})
</insert>
<delete id="delUser" parameterType="User">
delete from user where userId=#{userId}
</delete>
<update id="updUser" parameterType="User">
update user set userName=#{userName} where userId=#{userId}
</update>
</mapper>
namespace:是dao方法的接口。
mapper中的select/insert等标签:
id与dao方法接口的方法名相呼应。
parameterType:传入的值。
resultType:返回值类型。
#{userName}:占位符
insert into user(userName) values(#{userName}):表名后面括号里的是字段名,与values中的数据相对应。
dao方法的接口:/MyBatisWork/src/main/java/com/hc/dao/UserDao.java
package com.hc.dao;
import java.util.List;
import com.hc.entity.User;
public interface UserDao {
public List<User> selAllUser();
public User selAUser(Integer userid);
public List<User> selAUserByNa(String username);
public void insUser(User user);
public void delUser(Integer userid);
public void updUser(User user);
}
注意:方法名与mapper中select或insert等的id相同,不需要implement。
检测类:/MyBatisWork/src/test/java/com/hc/test/UserTest.java
package com.hc.test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.hc.dao.UserDao;
import com.hc.entity.User;
public class UserTest {
private SqlSessionFactory factory;
private SqlSession session;
@Before
public void before() {
factory = new SqlSessionFactoryBuilder().build(getClass().getClassLoader().getResourceAsStream("myBatis-config.xml"));
session = factory.openSession();
}
@Test
public void test() {
UserDao userDao=session.getMapper(UserDao.class);
// User user=new User("唐晨");
// user.setUserId(2);
// userDao.updUser(user);
// userDao.delUser(1);
// userDao.insUser(new User("花花公子"));
// List<User> users=userDao.selAllUser();
List<User> users=userDao.selAUserByNa("花花公子");
for (User user : users) {
System.out.println(user.getUserId()+"\t"+user.getUserName());
}
// User user=userDao.selAUser(2);
// System.out.println(user.getUserId()+"\t"+user.getUserName());
}
@After
public void after() {
session.commit();
session.close();
}
}
注意:
junit的Before在Test之前运行,After在Test之后运行。
ibatis的SqlSessionFactory:SQL工厂
局部变量切出为全局:ctrl+1,convert local variable to field
getClass().getClassLoader().getResourceAsStream:类加载器,加载配置文件myBatis-config.xml,创建SqlSessionFactory。
session.getMapper:加载dao接口,然后dao().某方法名,传参,即可完成数据操作。
session.commit():insert/update/delete需要将事务提交。
session.close():关闭session连接。
mybatis的第一次操作完成!
实现对数据的操作!
标签:userName,Java,userId,第一课,session,user,MyBatis,public,User From: https://blog.51cto.com/u_16082902/6214167