上篇是使用xml配置來完成mysql數(shù)據(jù)庫的操作创译,本文將使用注解形式巷疼,當(dāng)然由于本文是較基礎(chǔ)的入門級存皂,存在許多地方欠考慮的地方,請大家多包涵桌粉。由于代碼較簡單就省略注釋和講解了。
直接使用類來生成Mapper:
package com.nothing.Mapper;
import com.nothing.Model.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface UserMapper {
@Select("select * from user_nothing where id = #{id}")
User findUserById(int id);
@Insert("insert into user_nothing(username,password) values(#{username},#{password})")
void addUser(User user);
@Select("select * from user_nothing")
List<User> getAllUsers();
}
三個(gè)方法分別是向mysql數(shù)據(jù)庫中user_nothing表單條查詢衙四、添加铃肯、列表查詢。
基本上與userMapper.xml的句子一直(這里添加了一個(gè)查詢所有用戶的語句)传蹈,這里再次黏貼一下代碼押逼,便于比較:
<mapper namespace="userMapper">
<!--根據(jù)ID獲取對應(yīng)的值 -->
<select id="findUserById" parameterType="int" resultType="com.nothing.Model.User">
select * from user_nothing where id = #{id}
</select>
<insert id="addUser" parameterType="com.nothing.Model.User">
insert into user_nothing(username,password) values(#{username},#{password})
</insert>
</mapper>
本文因此就不需要userMapper.xml了。
需要修改的config沒什么改動(dòng)惦界,僅僅需要注意添加的mapper即可挑格。
<?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>
<!-- development:開發(fā)模式 work:工作模式 -->
<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/mysql" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="com.nothing.Mapper.UserMapper"/>
</mappers>
</configuration>
為便于讀者使用將之前的Dao和Service類都再貼出來:
public interface IUserDao {
User findUserById(int id);
void addUser(User user);
List<User> getAllUsers();
}
注意注釋部分是使用xml時(shí)配置。
public class UserDaoImpl implements IUserDao{
private SqlSessionFactory sessionFactory;
private SqlSession session;
private UserMapper mapper;
public UserDaoImpl() {
String resource = "conf.xml";
try {
Reader reader = Resources.getResourceAsReader(resource);
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
session = sessionFactory.openSession();
mapper = session.getMapper(UserMapper.class);
} catch (IOException e) {
e.printStackTrace();
}
}
public User findUserById(int id) {
// String statement = "userMapper.findUserById";
// User user = (User)session.selectOne(statement, id);
// return user;
return mapper.findUserById(id);
}
public void addUser(User user) {
// String statement = "userMapper.addUser";
// session.insert(statement, user);
mapper.addUser(user);
session.commit();
}
public List<User> getAllUsers() {
return mapper.getAllUsers();
}
}
public interface IUserService {
User findUserById(int id);
void addUser(User user);
List<User> getAllUsers();
}
public class UserServiceImpl implements IUserService{
private IUserDao userDao;
public UserServiceImpl() {
userDao = new UserDaoImpl();
}
public User findUserById(int id) {
return userDao.findUserById(id);
}
public void addUser(User user){
userDao.addUser(user);
}
public List<User> getAllUsers() {
return userDao.getAllUsers();
}
}
這里嘮叨一下表锻,最近學(xué)習(xí)mvp模式時(shí)恕齐,突然覺得移動(dòng)的mvp框架不就是這個(gè)Service作用么。
最后貼一下Controller
@Controller
public class MainController {
private IUserService service = new UserServiceImpl();
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String index( User user) {
return "index";
}
@RequestMapping(value="nice",method = RequestMethod.GET)
@ResponseBody
public List<User> nice(Model model){
return service.getAllUsers();
}
@RequestMapping(value ="/toJson",method=RequestMethod.POST)
@ResponseBody
public User toJson(User user){
service.addUser(user);
return service.findUserById(2);
}
}
運(yùn)行返回所有用戶的頁面截圖的結(jié)果圖瞬逊。是不是很簡單显歧?
Paste_Image.png