resource——mabatis-cofig.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>
<!-- 1.配置环境,默认的环境id为mysql -->
<environments default="mysql">
<!-- 1.2.配置id为mysql的数据库环境 -->
<environment id="mysql">
<!-- 使用JDBC的事务管理 -->
<transactionManager type="JDBC"/>
<!-- 配置数据库连接信息(数据库连接池) -->
<dataSource type="POOLED">
<!-- 数据库驱动-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- 连接数据库-->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<!-- 数据库的账户名称-->
<property name="username" value="root"/>
<!-- 数据库的密码-->
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 2.配置Mapper的位置 -->
<mappers>
<mapper resource="mapper/UserDao.xml"/>
</mappers>
</configuration>
resource-mapper-UserDao.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">
<!-- namespace 表示命名空间 -->
<mapper namespace="cn.javabs.dao.UserDao">
<!-- SQL语句 -->
<!-- 全部查询-->
<select id="findAllUser" resultType="cn.javabs.entity.User">
select * from user
</select>
<!-- 添加-->
<insert id="add" parameterType="cn.javabs.entity.User">
insert into user (username, address,sex,birthday)
values (#{username},#{ address},#{sex},#{birthday})
</insert>
<!-- 删除-->
<delete id="del" parameterType="int">
delete from user where id= #{id}
</delete>
<!-- 修改-->
<update id="Update" parameterType="cn.javabs.entity.User">
update user set username=#{username},address=#{address},sex=#{sex} where id=#{id}
</update>
<!-- 通过id查询-->
<select id="findUserById" parameterType="integer" resultType="cn.javabs.entity.User">
select * from user where id = #{id}
</select>
<!-- 模胡查询-->
<select id="findUserByName" parameterType="String" resultType="cn.javabs.entity.User">
select * from user where username like #{username}
</select>
<!-- 查询总条数-->
<select id="findAllUserTotal" resultType="java.lang.Integer">
select count(*) from user
</select>
<!--条件查询-->
<select id="findCondition" resultType="cn.javabs.entity.User">
<!-- select * from user where 1=1-->
<!-- <if test="sex != null">-->
<!-- and sex =#{sex}-->
<!-- </if>-->
<!-- <if test="username !=null">-->
<!-- and username like #{username}-->
<!-- </if>-->
select * from user
<where>
<if test="sex != null">
and sex =#{sex}
</if>
<if test="username !=null">
and username like #{username}
</if>
</where>
</select>
</mapper>
main-java-cn.javabs.dao.UserDao
package cn.javabs.dao;
import cn.javabs.entity.User;
import java.util.List;
public interface UserDao {
/**
* 添加方法
* @param user
*/
void add(User user);
/**
* 查询全部
* @return
*/
List<User> findAllUser();
/**
* 删除
* @param i
*/
void del(int i);
/**
* 修改
* @param user
*/
void Update(User user);
/**
* 根据id 查询
* @param i
* @return
*/
User findUserById(int i);
/**
* 模糊查询
* @return
*/
List<User> findUserByName(String username);
/**
* 查询总条数
* @return
*/
int findAllUserTotal();
/**
* 条件查询
* @param user
* @return
*/
List<User> findCondition(User user);
}
main-java-cn.javabs.entity
package cn.javabs.entity;
import java.util.Date;
/**
* 持久化类
*/
public class User {
private Integer id;
private String username;
private String address;
private String sex;
private Date birthday;
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", address='" + address + '\'' +
", sex='" + sex + '\'' +
", birthday=" + birthday +
'}';
}
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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
test-java-cn.javabs.test.MybatisTest
```java
package cn.javabs.test;
import cn.javabs.dao.UserDao;
import cn.javabs.entity.User;
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.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
public class MybatisTest {
private SqlSession sqlSession=null;
private UserDao userDao=null;
@Before
public void init()throws IOException{
// 1.读取配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
// 2.根据配置文件创建SQLSessionFactory SQL会话工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
// 通过工厂 开启SQLSession
sqlSession = factory.openSession();
//读取dao的代理对象
userDao = sqlSession.getMapper(UserDao.class);
}
@After
public void destory()throws IOException{
// 提交事务
sqlSession.commit();
// 关闭SQLSession
sqlSession.close();
}
/**
* 添加用户
* @throws Exception
*/
@Test
public void testAdd() throws Exception {
User user = new User();
user.setUsername("乔布斯");
user.setSex("女");
user.setAddress("江苏");
userDao.add(user);
}
/**
* 删除用户
* @throws Exception
*/
@Test
public void testDel() throws IOException {
userDao.del(2);
}
/**
* 修改用户
* @throws IOException
*/
@Test
public void testUpdate() throws IOException {
User user = new User();
user.setId(3);
user.setUsername("任性");
user.setSex("女");
user.setAddress("河南");
userDao.Update(user);
}
/**
* 根据用户的id查询
* @throws IOException
*/
@Test
public void testFindUserById() throws IOException {
User u= userDao.findUserById(1);
System.out.println(u);
}
/**
* 模糊查询
* @throws IOException
*/
@Test
public void testFindUserByName() throws IOException {
String username="%任%";
List<User> list = userDao.findUserByName(username);
for (User u: list){
System.out.println(u);
}
}
/**
* 查询总条数
* @throws IOException
*/
@Test
public void testFindUserTotal() throws IOException {
int count = userDao.findAllUserTotal();
System.out.println("count"+count);
}
/**
* 按条件查询
* @throws IOException
*/
@Test
public void testCondition() throws IOException {
User user = new User();
user.setSex("女");
user.setUsername("%任%");
List<User> list= userDao.findCondition(user);
for (User u :list ){
System.out.println(u);
}
}
/**
* 全部查询
* @throws Exception
*/
@Test
public void testFind() throws Exception {
// 通过接口找findAll方法
List<User> list = userDao.findAllUser();
// 采用foreach
for (User u:list){
System.out.println(u);
}
// 迭代器的写法
Iterator<User> it = list.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
}
}
改动1后的地方
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>
<!-- 1.读取数据库信息-->
<properties resource="jdbc.properties"/>
<!-- 类型别名-->
<typeAliases>
<!-- typeAlias 配置别名 只对这个类配置了-->
<!-- <typeAlias type="cn.javabs.entity.User"/>-->
<!-- 对entity包下的所有类配置-->
<package name="cn.javabs.entity"/>
</typeAliases>
<!-- 1.配置环境,默认的环境id为mysql -->
<environments default="mysql">
<!-- 1.2.配置id为mysql的数据库环境 -->
<environment id="mysql">
<!-- 使用JDBC的事务管理 -->
<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>
<!-- 2.配置Mapper的位置 -->
<mappers>
<!-- cn.javabs.dao 自动加载所有映射文件 有点问题-->
<!-- <package name="mapper/*"/>-->
<mapper resource="mapper/UserDao.xml"/>
</mappers>
</configuration>
UserDao.xml
返回类型小,起别名
```java
<?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">
<!-- namespace 表示命名空间 -->
<mapper namespace="cn.javabs.dao.UserDao">
<!-- SQL语句 -->
<!-- 全部查询-->
<select id="findAllUser" resultType="user">
select * from user
</select>
<!-- 添加-->
<insert id="add" parameterType="user">
<!--
keyProperty 是持久化类的编号 对应的是 user 类的id
keyColumn 是数据库中的字段名称 对应user 表的id
resultType 是 返回结果 因为返回是编号 因此int
erder 是 在插入语句之前before还是 ofter
-->
<selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
select LAST_INSERT_ID();
</selectKey>
insert into user (username, address,sex,birthday)
values (#{username},#{ address},#{sex},#{birthday})
</insert>
<!-- 删除-->
<delete id="del" parameterType="int">
delete from user where id= #{id}
</delete>
<!-- 修改-->
<update id="Update" parameterType="user">
update user set username=#{username},address=#{address},sex=#{sex} where id=#{id}
</update>
<!-- 通过id查询-->
<select id="findUserById" parameterType="integer" resultType="user">
select * from user where id = #{id}
</select>
<!-- 模胡查询-->
<select id="findUserByName" parameterType="String" resultType="user">
select * from user where username like #{username}
</select>
<!-- 查询总条数-->
<select id="findAllUserTotal" resultType="java.lang.Integer">
select count(*) from user
</select>
<!--条件查询-->
<select id="findCondition" resultType="user">
<!-- select * from user where 1=1-->
<!-- <if test="sex != null">-->
<!-- and sex =#{sex}-->
<!-- </if>-->
<!-- <if test="username !=null">-->
<!-- and username like #{username}-->
<!-- </if>-->
select * from user
<where>
<if test="sex != null">
and sex =#{sex}
</if>
<if test="username !=null">
and username like #{username}
</if>
</where>
</select>
</mapper>
jdbc.properties 文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=root
```java
mybatis-config.xml
!-- 配置:查询结果的字段名称与实体中书名名 的对应关系-->
<resultMap id="userMap" type="user">
<!-- 1.主键字段的对应-->
<id property="userId" column="id"/>
<!-- 2.非主键(普通)字段的对应 -->
<result property="userName" column="username"/>
<!-- <result property="userSex" column="sex"/>-->
<result property="userAddress" column="address"/>
<!-- <result property="Usersex" column="sex"/>-->
<result property="userAddress" column="address"/>
<result property="userBirthday" column="bitthday"/>
</resultMap>
此时User
package cn.javabs.entity;
import java.util.Date;
/**
* 持久化类
*/
public class User {
private Integer userId;
private String userName;
private String userAddress;
private String Usersex;
private Date userBirthday;
@Override
public String toString() {
return "User{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", userAddress='" + userAddress + '\'' +
", Usersex='" + Usersex + '\'' +
", userBirthday=" + userBirthday +
'}';
}
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;
}
public String getUserAddress() {
return userAddress;
}
public void setUserAddress(String userAddress) {
this.userAddress = userAddress;
}
public String getUsersex() {
return Usersex;
}
public void setUsersex(String usersex) {
Usersex = usersex;
}
public Date getUserBirthday() {
return userBirthday;
}
public void setUserBirthday(Date userBirthday) {
this.userBirthday = userBirthday;
}
}