注:在此文章中加了 jdbc.properties文件,用于设置连接数据库时的一些变量的值
1.javaBean
package com.bean;
public class User {
private Integer id;
private String username;
private String password;
private Integer phone;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getPhone() {
return phone;
}
public void setPhone(Integer phone) {
this.phone = phone;
}
}
2.log4j.properties
# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.mapper=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
3.jdbc.properties(对一些变量的设置)
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/mybatis
username=root
password=123456
4.mybatis配置文件
<?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">
<!--1.配置环境 ,默认的环境id为mysql-->
<configuration>
<!-- 导入 jdbc.properties 引用里面的值-->
<properties resource="jdbc.properties"/>
<!-- 1.指定mybatis所用日志的具体实现 -->
<settings>
<setting name="logImpl" value="LOG4j"/>
</settings>
<!-- 起别名 -->
<typeAliases>
<typeAlias type="com.bean.User" alias="User"/>
<!-- 自动在包名下搜索javabean并起别名为 类名的首字母小写 -->
<!-- <package name="com.bean"/> -->
</typeAliases>
<!--2.配置环境 ,默认的环境id为mysql-->
<environments default="mysql">
<!--2.2.配置id为mysql的数据库环境 -->
<environment id="mysql">
<!-- 2.2.1使用JDBC的事务管理 使用了JDBC的提交和回滚设置-->
<transactionManager type="JDBC"></transactionManager>
<!--2.2.2数据库连接池 POOLED是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>
<!--3.配置Mapper的位置 -->
<mappers>
<mapper class="com.mapper.UserMapper"/>
<!-- 使用本地文件 -->
<!-- <mapper url="file:///D:/java/workspaces/mybatis0/src/com/mapper/UserMapper.xml"/> -->
</mappers>
</configuration>
5.数据库操作的类
package com.mapper;
import java.net.PasswordAuthentication;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.DeleteProvider;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.annotations.UpdateProvider;
import com.bean.User;
public interface UserMapper {
@InsertProvider(type=UserMapperProvider.class,method="insertUser")
int addUser(User user);
@DeleteProvider(type=UserMapperProvider.class,method="deleteUser")
int deleteUserById(@Param("index")int id);
@UpdateProvider(type=UserMapperProvider.class,method="updateUser")
int updateById(User user);
@SelectProvider(type=UserMapperProvider.class,method="selectAll")
List<User> selectUser(User user);
@SelectProvider(type=UserMapperProvider.class,method="selectLikeUser")
List<User> selectUsersBylike(@Param("name")String username);
//如果传递两个参数,就需要使用@Param对参数命名,其中@Param("")括号中的值必须跟sql语句中的一致
@Select("select * from user where username=#{username} and password=#{password}")
User selectUserBytwo(@Param("username")String username1,@Param("password")String password1);
}
6.数据库操作时关联的类
package com.mapper;
import java.util.Map;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;
import org.apache.tools.ant.types.CommandlineJava.SysProperties;
import com.bean.User;
public class UserMapperProvider {
public String insertUser(final User user) {
return new SQL(){
{
INSERT_INTO("user");
if (user.getUsername()!=null && user.getUsername()!="")
{
VALUES("username",user.getUsername());
}
if (user.getPassword()!=null && user.getPassword()!="")
{
VALUES("password",user.getPassword());
}
if (user.getPhone()!=null && user.getPhone().toString()!="")
{
VALUES("phone",user.getPhone().toString());
}
}
}.toString();
}
public String deleteUser(final Map<String,Integer> para) {
SQL sql=new SQL(){
{
DELETE_FROM("user");
WHERE("id=#{index}");
}
};
System.out.println(sql);
return sql.toString();
}
public String updateUser(final User user) {
SQL sql=new SQL(){
{
UPDATE("user");
if(user.getUsername()!=null&&user.getUsername()!="")
SET("username=#{username}");
if(user.getPassword()!=null && user.getPassword()!="")
SET("password=#{password}");
}
};
return sql.toString();
}
public String selectAll(final User user) {
return new SQL(){
{
SELECT("*");
FROM("user");
if (user.getUsername()!=null && user.getUsername()!="")
{
WHERE("username=#{username}");
}
}
}.toString();
//另一种写法:
/*String sql="";
sql+="select * from user where 1=1 ";
if (user.getUsername()!=null && user.getUsername()!="")
{
sql+="and username=#{username}";
}
return sql;*/
}
public String selectLikeUser(final Map<String,String> username) {
return new SQL(){
{
SELECT("*");
FROM("user");
if(username.get("name")!=null &&username.get("name")!="")
WHERE("username like concat('%',#{name},'%')");
}
}.toString();
}
}
7.增
package com.test;
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;
import org.apache.tools.ant.types.CommandlineJava.SysProperties;
import org.junit.Test;
import com.bean.User;
import com.mapper.UserMapper;
public class Test1 {
@Test
public void add() throws IOException {
//第一步 读取配置文件mybatis-config.xml
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
//第二步 创建会话工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//第三步 生成会话
SqlSession session = sessionFactory.openSession();
//第四步代理映射(获取mapper接口的代理对象)
UserMapper userMapper=session.getMapper(UserMapper.class);
User user=new User();
user.setUsername("'二狗子'");
user.setPassword("'123456'");
user.setPhone(110);
int i=userMapper.addUser(user);
if(i>0)
System.out.println("插入成功");
else
System.out.println("插入失败");
session.commit();
session.close();
}
}
8.删
package com.test;
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;
import org.junit.Test;
import com.mapper.UserMapper;
public class Test2 {
@Test
public void delete() throws IOException
{
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sessionFactory.openSession();
UserMapper userMapper=session.getMapper(UserMapper.class);
int i=userMapper.deleteUserById(3);
if(i>0)
System.out.println("删除成功");
else
System.out.println("删除失败");
session.commit();
session.close();
}
}
9.改
package com.test;
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;
import org.junit.Test;
import com.bean.User;
import com.mapper.UserMapper;
import javassist.expr.NewArray;
public class Test3 {
@Test
public void update() throws IOException
{
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sessionFactory.openSession();
UserMapper userMapper=session.getMapper(UserMapper.class);
User user=new User();
user.setId(4);
user.setUsername("哈哈哈哈");
user.setPassword("111111");
int i=userMapper.updateById(user);
if(i>0)
System.out.println("修改成功");
else
System.out.println("修改失败");
session.commit();
session.close();
}
}
10.查
package com.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import com.bean.User;
import com.mapper.UserMapper;
public class Test4 {
@Test
public void select() throws IOException
{
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sessionFactory.openSession();
//第四步代理映射
UserMapper userMapper=session.getMapper(UserMapper.class);
User user2=new User();
user2.setUsername("哈哈哈哈");
List<User> users=userMapper.selectUser(user2);
for(User user:users)
{
System.out.print(user.getId()+"\t");
System.out.print(user.getUsername()+"\t");
System.out.print(user.getPassword()+"\t");
System.out.println(user.getPhone());
}
}
@Test
public void selectUserByLike() throws IOException
{
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sessionFactory.openSession();
UserMapper userMapper=session.getMapper(UserMapper.class);
List<User> users=userMapper.selectUsersBylike("玉");
for(User user:users)
{
System.out.print(user.getId()+"\t");
System.out.print(user.getUsername()+"\t");
System.out.print(user.getPassword()+"\t");
System.out.println(user.getPhone());
}
}
@Test
public void selectUserBytwo() throws IOException
{
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sessionFactory.openSession();
UserMapper userMapper=session.getMapper(UserMapper.class);
User user=userMapper.selectUserBytwo("二狗子", "1111111");
System.out.print(user.getId()+"\t");
System.out.print(user.getUsername()+"\t");
System.out.print(user.getPassword()+"\t");
System.out.println(user.getPhone());
}
}