------1,采用xml配置方式来做
建表语句:
采用sqlserver数据库 库名为:test
use test;
CREATE TABLE dbo.user1(
id int IDENTITY(1,1) NOT NULL,
NAME varchar(20) DEFAULT NULL,
age int DEFAULT NULL,
PRIMARY KEY (id));
1,先写个共有类来做连接及关闭连接
package com.cn.mybatis;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MybatisUtils {
public static SqlSession getSession(){
InputStream inputStream = null;
SqlSessionFactory sessionFactory=null;
SqlSession session = null;
try {
inputStream = Resources.getResourceAsStream("com/cn/sources/mybatisConf.xml");
sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
session = sessionFactory.openSession(true);
} catch (IOException e) {
e.printStackTrace();
}
return session;
}
public static void closeSession(SqlSession session) throws IOException{
if(session != null){
session.close();
}
}
}
2,数据库连接mybatisConf.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">
<!-- 这里是采用xml注解方式来进行获取到Configuration -->
<configuration>
<properties resource="dataSource.properties"/>
<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>
<mappers>
<mapper resource="com/cn/sources/mapper.xml"/>
</mappers>
</configuration>
3,数据库连接的参数放置在src下 dataSource.properties
url=jdbc:sqlserver://chot3r8csts02:1433;DatabaseName=test
username=devplogin
password =devplogin
driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
4,编写mapper.xml配置文件内容,放置sql语句
<?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.cn.sources">
<insert id="insertUser" parameterType="com.cn.bean.User">
insert into user1(name,age) values(#{name},#{age})
</insert>
<select id="selectUser" parameterType="int" resultType="com.cn.bean.User">
select * from user1 where id=#{id}
</select>
<update id="updateUser" parameterType="Object">
update user1 set name = #{0}
</update>
</mapper>
5,编写实体类
package com.cn.bean;
import java.io.Serializable;
/**
* @author yuchao
*
* @school 南阳理工软件学院移动设备应用与开发移动四班
*
* @email [email protected]
*
* @time 2014年10月2日 下午7:45:52
*/
@SuppressWarnings("serial")
public class User implements Serializable {
private int id;
private String name;
private int age;
public User() {
}
public User(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
6,开始连接测试增删改查
package com.cn.mybatis;
import java.io.IOException;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import com.cn.bean.User;
/**
* @author yuchao
*
* @school 南阳理工软件学院移动设备应用与开发移动四班
*
* @email [email protected]
*
* @time 2014年10月2日 下午7:56:43
*/
public class TestMybatis {
@Test
public void testInsert() throws IOException{
SqlSession session = null;
try{
//注:该路径填写相对路径 propoties文件一定要放在src下面,否则容易引发错误
session = MybatisUtils.getSession();
User user = new User("余超", 21);
String statement = "com.cn.sources.insertUser";
int i = session.insert(statement, user);
if (i == 1)
System.out.println("新增加用户成功!!!!");
else
System.out.println("添加用户失败!!!");
}catch(Exception e){
e.printStackTrace();
}finally {
MybatisUtils.closeSession(session);
}
}
@Test
public void testSelect() throws IOException{
SqlSession session = null;
try{
//注:该路径填写相对路径 propoties文件一定要放在src下面,否则容易引发错误
session = MybatisUtils.getSession();
String statement = "com.cn.sources.selectUser";
List<User> list = session.selectList(statement, 1);
if(list != null && list.size()>0){
for(User user : list){
System.out.println("用户名为:"+ user.getName() + ",年龄为:" + user.getAge());
}
}
}catch(Exception e){
e.printStackTrace();
}finally {
MybatisUtils.closeSession(session);
}
}
@Test
public void testUpdate() throws IOException{
SqlSession session = null;
try{
//注:该路径填写相对路径 propoties文件一定要放在src下面,否则容易引发错误
session = MybatisUtils.getSession();
String statement = "com.cn.sources.updateUser";
session.update(statement, "浪君");//如果update语句中包含多个传参则还不能直接用这种方式
}catch(Exception e){
e.printStackTrace();
}finally {
MybatisUtils.closeSession(session);
}
}
}
----------------------第二种方式是完全不使用xml配置文件,采用注解的方式来做
1,编写实体类
package com.cn.bean;
import java.io.Serializable;
/**
* @author yuchao
*
* @school 南阳理工软件学院移动设备应用与开发移动四班
*
* @email [email protected]
*
* @time 2014年10月2日 下午7:45:52
*/
@SuppressWarnings("serial")
public class User implements Serializable {
private int id;
private String name;
private int age;
public User() {
}
public User(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
2,编写映射类,做sql查询及接口方法
package com.cn.mybatis;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.cn.bean.User;
public interface BlogMapper {
@Select("SELECT * FROM user1 WHERE id = #{id}")
User selectUser(int id);
@Delete("delete from user1 where id = #{id}")
void deleteUser(int id);
@Update("update user1 set name = #{name} where id = #{id}")
void updateUser(@Param("name")String name,@Param("id")int id);
}
3,连接及增删改查
package com.cn.mybatis;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.ibatis.datasource.pooled.PooledDataSourceFactory;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import org.junit.Test;
import com.cn.bean.User;
public class TestMybatisOther {
private static final SqlSessionFactory SqlSessionFactory;
static{
SqlSessionFactory = getSqlSessionFactory();
}
@Test
public void testSelect(){
SqlSession session = getSqlSession();
try {
BlogMapper mapper = session.getMapper(BlogMapper.class);
User user = mapper.selectUser(2);
System.out.println("用户名为:"+ user.getName() + ",年龄为:" + user.getAge());
} finally {
session.close();
}
}
@Test
public void testDelete(){
SqlSession session = getSqlSession();
try {
BlogMapper mapper = session.getMapper(BlogMapper.class);
mapper.deleteUser(1);
session.commit();
System.out.println("删除成功!");
} finally {
session.close();
}
}
@Test
public void testUpdate(){//传入多个参数可使用注解的方式
SqlSession session = getSqlSession();
try {
BlogMapper mapper = session.getMapper(BlogMapper.class);
mapper.updateUser("志豪", 2);
session.commit();
System.out.println("更新成功!");
} finally {
session.close();
}
}
//SqlSessionFactory最好被创建一次而不要被多次创建
public static SqlSessionFactory getSqlSessionFactory(){
PooledDataSourceFactory pooledDataSourceFactory = new PooledDataSourceFactory();
pooledDataSourceFactory.setProperties(getProperties());
DataSource dataSource = pooledDataSourceFactory.getDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();//加入事务控制,需要注意的是:需要在执行后commit否则默认会执行回滚操作
Environment environment = new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
return sqlSessionFactory;
}
//SqlSession可被多次创建
public static SqlSession getSqlSession(){
//不采用xml方式获取到configuration
SqlSession session = SqlSessionFactory.openSession();
return session;
}
//获取数据库连接信息并放置到Properties文件中
public static Properties getProperties(){
Properties properties = new Properties();
properties.setProperty("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver");
properties.setProperty("url", "jdbc:sqlserver://chot3r8csts02:1433;DatabaseName=test");
properties.setProperty("username", "devplogin");
properties.setProperty("password", "devplogin");
return properties;
}
}
--------总结:各有各的好处,一般用的多的是xml配置方式